Mercurial переезд совершает в другой ветке - PullRequest
50 голосов
/ 28 июня 2011

Мой коллега случайно сделал два коммита в ветке по умолчанию вместо создания своей собственной ветки разработки.

Как я могу изменить эту ситуацию и переместить эти два коммита в новую ветку?

Ответы [ 3 ]

50 голосов
/ 18 апреля 2014

Представьте себе следующий сценарий:

D
|
C
| "I want to move C and D here"
B/
|
A

Шаги:

  1. hg update B
  2. hg branch "mybranch"
  3. hg commit --message "Create my branch"
  4. hg update mybranch
  5. hg graft -r C
  6. hg graft -r D
  7. hg strip -r C (это должна быть версия C, изначально)

    Команда strip предоставляется расширением, которое необходимо включить. Вы можете следовать инструкциям по включению его в Mercurial Wiki .

  8. hg update default
38 голосов
/ 28 июня 2011

Главный вопрос

Дошли ли случайные коммиты до других репозиториев или это только его собственные? Если это так, вы можете перейти к разделу ниже «Возможно, кот все еще в сумке», в противном случае вам может потребоваться немало работы.


Вы не одиноки

См. здесь для получения дополнительной информации о том, как исправить проблему в другом месте в переполнении стека. Описан «правильный» путь к этому

  • экспорт патча
  • создать ветку
  • импортировать патч
  • удалить предыдущие коммиты.


Может быть, кошка все еще в сумке

Если изменения внесены только в локальную копию, то более простым решением будет

  • создать новую ветку
  • переключиться на него
  • объединить изменения с этим с помощью вашего любимого инструмента слияния ( go Meld ) или hg graft
  • используйте команду hg strip , чтобы удалить изменения на старом брахе
  • протолкнуть изменения в мир
  • притворись, будто ничего не случилось, насвисти счастливую мелодию ...
7 голосов
/ 06 июня 2017

Оба приведенных выше ответа верны, но, при условии, что кто-то еще не выдвинул коммиты , есть третий путь.

Я только что успешно использовал rebase*Команда 1007 * для перемещения строки коммитов в ветку темы, которую я забыл создать в первую очередь.

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

Требуется больше времени, чтобы объяснить это, чем делать это с TortoiseHg или даже из командной строки, на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...