Я хочу полностью удалить коммит Mercurial, как если бы он никогда не был введен в репозиторий, и вернуться к моему предыдущему коммиту.
Это возможно?
Я хочу полностью удалить коммит Mercurial, как если бы он никогда не был введен в репозиторий, и вернуться к моему предыдущему коммиту.
Это возможно?
Если это была ваша последняя фиксация и вы ее никуда не отправляли, вы можете сделать это с помощью rollback
. В противном случае нет. Не совсем. Пора сменить пароли.
Изменить. Было указано, что вы можете клонировать более старую ревизию и объединить изменения, которые хотите сохранить. Это также верно, если вы не отправили его в репо, которое вы не контролируете. После того, как вы нажмете, ваши данные, скорее всего, будет очень трудно вернуть.
hg outgoing
или поделиться им с другим репозиторием. Если изменить фазу на секретную, то клонирование будет делать примерно то же, что и моя редакция. Я бы использовал histedit или mq, прежде чем делать это.
- person nmichaels; 28.03.2013
Вы можете попытаться удалить информацию mq о вашем коммите.
Для редактирования истории я бы использовал расширение Histedit Extension.
hg histedit 45:c3a3a271d11c
Однако имейте в виду, что это имеет смысл только в ситуации, когда вы еще не отправили коммиты в общедоступный репозиторий, вы владеете общедоступным репозиторием и / или можете учитывать все имеющиеся там клоны. Если вы получили следующую ошибку:
abort: can't rebase immutable changeset 43ab8134e7af
Это означает, что Mecurial считает, что это общедоступный набор изменений (см. этапы), который уже был продвинут - вы может заставить его снова стать draft
, делая:
hg phase -f -d 45:c3a3a271d11c
Я с этим сталкиваюсь довольно часто. Я делаю фиксацию и затем тяну, чтобы протолкнуть. Но затем что-то приближается, что делает мой недавно сделанный коммит ненужным. Одного hg rollback
недостаточно, потому что он только отменяет тягу ...
Вот что нужно сделать:
hg strip <rev>
Все безболезненно, когда вы никуда не продвигаете свои изменения.
Вы можете использовать "hg backout" в основном для обратного слияния. Все варианты обсуждаются в свободно доступной книге «Mercurial: The Definitive Guide»:
http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html
Если это более одного коммита и / или вы уже отправили его в другое место, вы можете клонировать свой репозиторий и указать последний набор изменений, который следует клонировать.
См. Мой ответ здесь, как это сделать:
Mercurial: исправить ошибочную историю
Если вы зафиксировали только локально и не нажимали, вы можете просто создать клон локально (как описано в моей ссылке), и все готово.
Если вы уже перешли в какой-то удаленный репозиторий, вам придется заменить его своим клоном.
Конечно, это зависит от того, можете ли вы (или разрешили) это сделать.
Если вы используете черепаху, вы можете использовать историю изменений> полоса ...
да. Если я не ошибаюсь, начиная с версии 2.3 (отн. 2012/08/01) вы можете использовать HisteditExtension с командой drop
для удаления фиксации вместе с strip
или backout
для удаления изменений.
Простой поиск в Google по этой функции: https://www.google.com/webhp#q=histedit+drop