#mercurial #branch #working-copy
#mercurial #ветка #рабочая копия
Вопрос:
Я забыл переключить свою рабочую копию обратно на правильную ветку и внес некоторые изменения.
Как я могу зафиксировать текущие изменения (но не все другие изменения в текущей ветке) в моей исходной ветке?
Ответ №1:
Если я правильно понимаю, у вас есть незафиксированные изменения, которые должны быть поверх другой ветки.
Мой предпочтительный способ — использовать функциональность shelf для сохранения всех ваших изменений, обновления до правильной ветки, а затем отменить хранение ваших изменений в соответствующей ветке.
Чтобы сделать это в командной строке, сохраните результат hg diff
в файле исправления, затем обновите в другой ветке и hg import <patch>
.
Наконец, просто зафиксируйте свой набор изменений, как вы хотели.
Комментарии:
1. Да, все еще быстрее и за меньшее количество шагов, чем MQ!
Ответ №2:
- Расширение Shelve позволяет хранить WIP, получать чистый рабочий каталог, обновлять до необходимой ветки, выпускать shelve
- MQ exension (как-то излишне) позволяет делать то же самое, что и shelve
- Наконец, вы можете зафиксировать в неправильной ветке и переназначить этот набор изменений на правильный родительский, используя расширение перебазирования
Комментарии:
1. Спасибо. На самом деле я узнал, как это сделать в TortoiseHg, используя пункт контекстного меню «Пересадка локальных изменений», который, возможно, использует расширение Transplant или Graft .
2. @FelixDombek — пересадка не перемещается , только копирует набор изменений. Перебазирование (после активации) можно найти в
Modify history
—Rebase
для контекстного меню набора изменений SRC