В Git я могу сделать это:
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
Я хочу знать, как сделать то же самое в Mercurial, и я просмотрел интернет для ответа, но лучшее, что я мог найти, было: git rebase - может hg сделать это
Эта ссылка содержит 2 примера:
1. Я признаю, что это: (заменив ревизии из примера на мой собственный пример)
hg up -C F hg branch -f newfeature-123 hg transplant -a -b newfeature-123
не так уж плохо, за исключением того, что он оставляет заново M-N-O в качестве незакрепленной головы и создает 3 новые коммиты M ', N', O ', которые представляют собой ветки с обновленной основной линией.
В основном проблема заключается в том, что я получаю следующее:
master A---B---C---D---E---F \ \ newfeature-123 \ M'---N'---O' \ newfeature-123 M---N---O
это не хорошо, потому что оно оставляет локальные нежелательные коммиты, которые следует отбросить.
- Другой вариант из той же ссылки -
hg qimport -r M:O hg qpop -a hg up F hg branch newfeature-123 hg qpush -a hg qdel -r qbase:qtip
и это приводит к желаемому графику:
master A---B---C---D---E---F \ newfeature-123 M---N---O
но эти команды (все 6 из них!) кажутся намного сложнее, чем
$ git rebase master
Я хочу знать, является ли это единственным эквивалентом в Hg или существует какой-то другой способ, который прост как Git.