threads / discuss / 23723

Instead of rebasing, etc....?

Subject: Instead of rebasing, etc....?

## tl;dr

4 messages between May 6, 2010 and May 10, 2010.

replies: 3people: 3as markdown or json

Dave Abrahams· May 6, 2010, 22:42 UTC · lore

I often find myself pursuing a development branch that I'm pushing out to a public repo, and then wanting to go back a few commits and start the end of the branch anew.

o-o-o-o origin/dev
      \
       o-o-o dev

Of course then I want to push dev and move origin/dev to refer to it. So I delete and recreate origin/dev. That's essentially like rebasing, and all the advice says "don't do it." How bad is that, really, if it's my own development branch?

If I try to avoid doing that I guess I have to "merge" with the remote branch but discard all its changes?

o-o-o-o - - - -o origin/dev dev
       \      / 
        o-o-o 

Is there a shortcut for that? It would be nice if Git had a way to note that sort of "false parentage" (the dotted line above) explicitly; it's not really there logically; it just helps the workflows to move along smoothly.

Dave Abrahams· May 6, 2010, 22:50 UTC · re: Dave Abrahams · lore

Re: Instead of rebasing, etc....?

Dave Abrahams <dave <at> boostpro.com> writes:
> 
> I often find myself pursuing a development branch ...

Sorry, my ASCII art was messed up in the previous message. Here's what I meant:

o-o-o-o origin/dev
   \
    o-o-o dev
o-o-o-o - -o origin/dev dev
   \      / 
    o-o-o 
Raja R Harinath· May 10, 2010, 08:03 UTC · re: Dave Abrahams · lore

Re: Instead of rebasing, etc....?

Hi,
Dave Abrahams <dave@boostpro.com> writes:
Show 15 quoted lines
> Dave Abrahams <dave <at> boostpro.com> writes:
>
>> I often find myself pursuing a development branch ...
>
> Sorry, my ASCII art was messed up in the previous message.  
> Here's what I meant:
>
> o-o-o-o origin/dev
>    \
>     o-o-o dev
>
>
> o-o-o-o - -o origin/dev dev
>    \      / 
>     o-o-o 
You can use the 'ours' merge strategy.
On the 'dev' branch, you do
   git merge -s ours origin/dev

Now 'origin/dev' is a parent of the new 'dev', while the tree contents haven't changed. You can now push 'dev' back to origin without any hassles.

- Hari
Ramkumar Ramachandra· May 10, 2010, 08:49 UTC · re: Dave Abrahams · lore

Re: Instead of rebasing, etc....?

Hi,
> Of course then I want to push dev and move origin/dev to refer to it.
> So I delete and recreate origin/dev.  That's essentially like
> rebasing, and all the advice says "don't do it."  How bad is that,
> really, if it's my own development branch?

If I understand correctly, you want a non-FF push. Simply develop on dev and `git push origin +dev:dev` to force a non-FF push. It's not bad at all if your branch isn't public and others aren't pulling from it.

-- Ram

← back to recent threads