В 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.


