From: Dave Abrahams <hidden> Date: 2016-06-15 22:48:45
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.
From: Raja R Harinath <hidden> Date: 2016-06-15 22:48:47
Hi,
Dave Abrahams [off-list ref] writes:
Dave Abrahams <dave <at> boostpro.com> writes:
quoted
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
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