Принимая незафиксированные изменения на неправильной ветки в правильную ветвь

Я использую Mercurial.

У меня есть некоторые незафиксированные изменения, но я нахожусь на неправильной ветке, как мне обновиться до правой ветки и внести изменения со мной?

Ответ 1

Для немедленных изменений вы можете использовать Расширение Shelve:

  • hg shelve --all
  • hg up correct_branch_name
  • hg unshelve

Ответ 2

Я спросил irc

mpm сказал

hg diff > mychanges; hg up -C somewhere; hg import --no-commit mychanges

который я рассматривал, но это то, чего я пытался избежать.

d70 сказал

i think you can easily do it by "hg update"ing to a changeset that is a
parent of the branch you're trying to switch to, and then "hg update"ing to the
tip of that branch

поэтому я сделал это.

hg up -r <shared root rev>
hg up branchIwant

Я спросил о "почему", и мне сказали: "вам не разрешено обновлять по веткам", что сначала не имело смысла для меня. Тогда я понял, что, поскольку я прошел через общий корень rev, это не по веткам.

Ответ 3

Я обычно использую

hg qnew
hg qpop
hg up -c <target-rev>
hg qpush
hg qfinish qtip

Но я также использую подход jrwrens для регулярного прохождения предка.