Если вы пытаетесь повторить последний коммит (возможно, с более совершенным сообщением о фиксации, возможно, с исправленной ошибкой), вам следует использовать
$ hg commit --amend
, чтобы обновить последний коммит.Это намного безопаснее, чем использовать hg rollback
, как описано ниже.
Если коммит является последним коммитом и у вас нигде не обновлено , то выможно использовать hg rollback
.Пожалуйста, прочитайте hg help rollback
- это потенциально разрушительная команда.
Что она делает: hg rollback
откатит последнюю транзакцию в вашем хранилище.Каждый раз, когда вы hg commit
, hg pull
, hg unbundle
и т. Д., Вы создаете новую транзакцию.Когда все безопасно хранится, Mercurial закрывает транзакцию.Если что-то пойдет не так в середине транзакции, Mercurial может восстановиться (см. hg recover
).Вы также можете вручную откатить последнюю транзакцию с помощью hg rollback
.Смотрите hg rollback --dry-run
для предварительного просмотра того, что команда сделает.
Команда отката не коснется вашей рабочей копии.Это означает, что файлы, которые были показаны как измененные, будут снова отображаться как измененные.Так что это легко сделать
$ hg commit -m "Fixed buug-123"
Упс, опечатка в сообщении коммита!Давайте исправим это:
$ hg rollback
$ hg commit -m "Fixed bug-123"
(используйте hg commit --amend
вместо Mercurial 2.2 и более поздних версий.)
Последнее сообщение о фиксации также сохраняется в .hg/last-message.txt
, поэтому вы можете восстановить его оттудаесли у вас его нет в истории вашей оболочки.
Что если у меня будут незафиксированные изменения, прежде чем я захочу сделать откат hg?Должен ли я сделать это первым?
Откат не касается рабочей копии.Это означает, что любые дополнительные изменения в рабочей копии будут отображаться вместе с изменениями из набора изменений.Это как если бы вы вообще не вводили hg commit.
А как насчет последних нескольких коммитов?Последовательный откат hg складывает изменения от этих коммитов к существующим незафиксированным изменениям?
Нет, у вас есть один уровень отката , так как мы отслеживаем только последнюю транзакцию.