Случайная работа над неправильной именованной веткой в Mercurial
Я вносил некоторые изменения в свой рабочий каталог и замечал, что я случайно работал над неправильной ветвью. Я еще ничего не совершал, и мне хотелось бы, чтобы мой следующий бой пошел против другого ветки. Каков наилучший способ сделать это?
Ответы
Ответ 1
Расширение Shelve может дать вам печаль, и это можно сделать полностью с помощью команд Mercurial. Кртек почти имел это, но использовал export
вместо diff
. Попробуйте следующее:
hg diff --git > ~/saved-work.patch
hg update --clean desiredbranch
hg import --no-commit ~/saved-work.patch
Ответ 2
Вы должны иметь возможность просто hg up otherbranch
. Важно, чтобы вы не использовали параметр --clean для hg up
, либо напрямую, либо через псевдоним, поскольку это отменит ваши незафиксированные изменения.
Другой вариант - использовать одно из расширений, предоставляющее hg shelve
. Затем процесс будет выглядеть следующим образом:
$ hg shelve --all
$ hg up otherbranch
$ hg unshelve
Это создаст патч ваших изменений в каталоге .hg, вернув рабочий каталог в чистое состояние, переключится на "otherbranch", а затем применит сохраненный патч.
Ответ 3
Я не знаю, является ли это лучшим решением, но вы можете выполнить следующие действия:
1 ° hg diff --git > modifications.patch
2 ° hg update -C the_right_branch
3 ° hg patch modifications.patch
Возможно, лучше скопировать изменения .patch где-то безопасно, на всякий случай.
изменить: обновить с помощью diff вместо экспорта. Спасибо комментаторам.