Mercurial отменить последний коммит
Как я могу отменить мое последнее случайно совершенное (не нажатое) изменение в Mercurial?
Если возможно, способ сделать это с TortoiseHg будет предпочтительным.
обновление
в моем конкретном случае я совершил изменений (не толкнул). Затем я вытащил и обновил с сервера. С этими новыми обновлениями я решил, что моя последняя фиксация устарела, и я не хочу ее синхронизировать. Так кажется, что hg rollback - Это не совсем то, что я ищу, потому что он откатит тягу вместо моей фиксации.
7 ответов:
один из способов будет
(осуждается с Нд2.7, август 2013 года)hg rollbackпожалуйста, используйте
hg commit --amendвместоrollbackдля исправления ошибок в последнем коммите.откат последней транзакции в хранилище.
, когда совершение или слияние, Mercurial добавляет изменений запись последняя.
Деятельный сохраняет журнал транзакций с именем каждого затронутого файла и его длиной до транзакции. При прерывании он усекает каждый файл до его предыдущей длины. Эта простота является одним из преимуществ создания revlogs только для добавления. Журнал проводок также допускает операцию отмены.посмотреть секция восстановления TortoiseHg:
этой теме также подробно разница между
hg rollbackиhg strip:
(написано Мартин Гайслер кто также вносит свой вклад на так)
'
hg rollback' удалить последнюю транзакцию. Сделки понятие часто встречается в базах данных. В Mercurial мы начинаем транзакцию, когда выполняются определенные операции, такие как commit, push, pull...
После успешного завершения операции транзакция помечается как завершенная. Если возникает ошибка, транзакция "откатывается" и репозиторий остается в том же состоянии, что и раньше.
Вы можете вручную вызвать откат с помощью "HG rollback". Это отменит последнюю транзакционную команду. Если команда pull принесла 10 новых наборов изменений в репозиторий на разных ветвях, то'hg rollback' удалить их все. Пожалуйста, обратите внимание:резервное копирование при откате транзакции!'
hg strip' удалит набор изменений и все его потомки. Этот изменений сохраняются как пакет, который вы можете применить снова, если вы нужно их вернуть.ForeverWintr предполагает, в комментариях (в 2016 году, 5 лет спустя)
вы можете "отменить фиксацию" файлов, сначала забыв их, например:
hg forget filea; hg commit --amend, но это кажется сложным.hg strip --keep- это, наверное, лучшее решение для современных НД.
hg stripполностью удалит ревизию (и любые потомки) из репозитория.для использования полосы вам нужно будет установить MqExtension добавить следующие строки в ваш .hgrc (или Mercurial.ini):
[extensions] mq =в TortoiseHg команда strip доступна на рабочем столе. Щелкните правой кнопкой мыши на ревизии и выберите "Изменить историю" - > "полоса".
С
stripизменяет историю репозитория вы должны только используйте его на ревизиях, которые еще ни с кем не были разделены. Если вы используете mercurial 2.1+ вы можете использовать этапы для отслеживания этой информации. Если фиксация все еще находится на стадии черновика, она не была совместно использована с другими репозиториями, поэтому вы можете безопасно удалить ее. (Спасибо Засурусу, что указал на это).
поскольку вы не можете откатить, вы должны объединить эту фиксацию в новую голову, которую вы получили, когда вытащили. Если вы не хотите, чтобы какая-либо из работ, которые вы сделали в нем, вы можете легко сделать это с помощью этот совет.
Так что если вы потянули и обновление по голове можно сделать так:
hg --config ui.merge=internal:local mergeсохраняет все изменения в текущей извлеченной редакции, и ни одно из изменений в не извлеченной редакции (тот, который вы написали, что вы больше не хотеть.)
Это отличный способ сделать это, потому что он сохраняет вашу историю точной и полной. Если через 2 года кто-то найдет ошибку в том, что вы вытащили, вы можете посмотреть в своей (неиспользуемой, но сохраненной) реализации того же самого и пойти: "О, я сделал это правильно". :)
hg rollbackэто то, что вы хотите.в TortoiseHg, the
hg rollbackвыполняется в диалоговом окне фиксации. Откройте диалоговое окно фиксации и выберите "Отменить".
после того, как вы вытащили и обновили свое рабочее пространство, сделайте thg и щелкните правой кнопкой мыши на наборе изменений, от которого вы хотите избавиться, а затем нажмите изменить историю -> strip, он удалит набор изменений, и вы укажете на подсказку по умолчанию.
его решение.
Если вы не нажмете на сервер, вы клонируете в новую папку еще вымывание(удалить все файлы) из папки репозитория и клонировать новый.



Comments