Можно ли редактировать сводку после фиксации с помощью TortoiseHg?
Иногда я передаю некоторый код в репозиторий, добавляю комментарий/сводку, затем читаю резюме и понимаю, что я допустил ошибку или должен был включить немного больше информации. Можно редактировать сводку после фиксации в TortoiseHg? Я использую версию 1.1
Ответы
Ответ 1
Если это последняя фиксация, вы можете нажать кнопку "Отменить" в диалоговом окне фиксации (это интерфейс к hg rollback
), а затем снова передать те же файлы с новым сообщением. Если это коммит в середине дерева, вам необходимо использовать расширение mq
, чтобы удалить все последующие коммиты и повторно применить их. И если коммит с неправильным сводкой переводится в публичное репо, вы должны принять и жить с этим, потому что вы не должны изменять опубликованные коммиты.
Ответ 2
Используйте mercurial queues для преобразования наборов изменений в патчи, затем разделите эти наборы изменений и повторно примените исправления обратно к вашему репозиторию.
При создании патчей они сохраняются в папке .hg/patches в вашем репозитории, и вы можете редактировать их (включая сообщение о фиксации), прежде чем повторно применять их.
- Включено расширения Mercurial Queues (MQ)
- Щелкните правой кнопкой мыши и выберите Import Revision to MQ для каждого набора изменений, чтобы преобразовать их в патчи в очереди исправлений.
- Включить окно очереди патчей в меню просмотра
- Выберите строку Un-apply All Patches в очереди исправлений, чтобы удалить изменения.
- Изменить файлы исправлений в .hg/patches
- Выберите Применить все патчи
- Щелкните правой кнопкой мыши патч и выберите Завершить Прикладную, чтобы закрыть очередь
Ответ 3
Фил. Я отправлю тот же ответ, который я только что разместил на этом вопросе (спросил после вас):
Один из подходящих способов сделать это - использовать histedit. Histedit позволяет вам удалять, изменять, комбинировать или иным образом редактировать ваши предыдущие коммиты.
Histedit не поставляется с Mercurial и не может использоваться с TortoiseHg, но использование командной строки очень просто:
> hg histedit <rev>
где находится ревизия, которую вы хотите изменить комментарий. Histedit сгенерирует список наборов изменений и покажет вам SHA1. Помимо каждого набора изменений есть слово, указывающее, что histedit будет делать с каждым набором изменений после закрытия текстового окна. Рядом с набором изменений, который вы хотите изменить, замените 'pick' на 'edit'. Закройте текстовое окно и выполните следующую команду:
> hg histedit --continue
и появится другое текстовое окно, содержащее сообщение журнала. Измените сообщение так, как хотите. Вы можете сделать это для нескольких наборов изменений за один раз, если файлы еще не были разделены. Это довольно тривиальное использование histedit, более сложные применения включали объединение коммитов или удаление части некоторой фиксации.
Ответ 4
Судя по ответам... так что итоговый ответ:
Да, возможно, если последним действием было совершение соответствующего набора изменений (в этом случае выполните команду откат) и
Нет, это невозможно, а не из коробки (без расширения mq и большого количества gruntwork), если данный набор изменений уже был нажат или последующие проверки были сделал.
Я отправляю этот ответ, потому что другие ответы не признают "нет", а только "если".:) Не стесняйтесь голосовать, я просто хотел изложить здесь свои выводы.
Ответ 5
hg 2.2 просто добавил параметр git
-like --amend
. (См. hg 2.2 примечания к выпуску.)
Итак, вы можете сделать это в командной строке:
hg commit --amend
См. также Mercurial: как исправить последнее коммит?
Я не понял, как это сделать в TortoiseHg.
Ответ 6
Если вы зафиксируете, но не нажали, вы можете отменить последнюю фиксацию, используя
hg rollback
Я не уверен, что эта функция реализована в TortoiseHG, но вы всегда можете открыть консоль, перейдите к репо и введите эту команду самостоятельно.
Ответ 7
TortoiseHG, если вы не нажали:
Отметьте последнюю версию (которая должна быть изменена),
щелкните зеленый галочкой сверху, как если бы вы хотели зафиксировать.
Откройте треугольник меню справа от кнопки "commit" справа и выберите "изменить текущую версию" вместо "фиксации изменений".
Здесь вы находитесь.