Hg: How to do a rebase like git's rebase
Posted
by jpswain09
on Stack Overflow
See other posts from Stack Overflow
or by jpswain09
Published on 2010-04-20T03:34:23Z
Indexed on
2010/04/20
4:03 UTC
Read the original article
Hit count: 406
Hey guys,
In Git I can do this:
1. Start working on new feature: $ git co -b newfeature-123 # (a local feature development branch) do a few commits (M, N, O) master A---B---C \ newfeature-123 M---N---O 2. Pull new changes from upstream master: $ git pull (master updated with ff-commits) master A---B---C---D---E---F \ newfeature-123 M---N---O 3. Rebase off master so that my new feature can be developed against the latest upstream changes: (from newfeature-123) $ git rebase master master A---B---C---D---E---F \ newfeature-123 M---N---O
I want to know how to do the same thing in Mercurial, and I've scoured the web for an answer, but the best I could find was this: http://www.selenic.com/pipermail/mercurial/2007-June/013393.html
That link provides 2 examples:
1. I'll admit that this: (replacing the revisions from the example with those from my own example)
hg up -C F hg branch -f newfeature-123 hg transplant -a -b newfeature-123
is not too bad, except that it leaves behind the pre-rebase M-N-O as an unmerged head and creates 3 new commits M',N',O' that represent them branching off the updated mainline.
Basically the problem is that I end up with this:
master A---B---C---D---E---F \ \ newfeature-123 \ M'---N'---O' \ newfeature-123 M---N---O
this is not good because it leaves behind local, unwanted commits that should be dropped.
- The other option from the same link is
hg qimport -r M:O hg qpop -a hg up F hg branch newfeature-123 hg qpush -a hg qdel -r qbase:qtip
and this does result in the desired graph:
master A---B---C---D---E---F \ newfeature-123 M---N---O
but these commands (all 6 of them!) seem so much more complicated than
$ git rebase master
I want to know if this is the only equivalent in Hg or if there is some other way available that is simple like Git.
Thanks!!
Jamie
© Stack Overflow or respective owner