Подтвердить что ты не робот

Откат нескольких коммитов (до нажатия на публичные) в Mercurial

Мне известно, что откаты могут удалять фиксации из последнего набора изменений в локальном репозитории. Однако можно ли удалить все последние коммиты с момента предыдущего нажатия без повторного клонирования хранилища общих ресурсов?

4b9b3361

Ответ 1

Вы можете создать новое репо с hg clone:

hg clone -r last_good_changeset localrepo newlocalrepo

Ответ 2

Вы можете использовать команду hg strip, часть расширения mq:

hg strip REV

Это приведет к удалению этой версии + всех ее потомков.

Прежде чем пытаться это сделать, сделайте копию/клон репозитория для экспериментов.

Ответ 3

Если вы используете меркулярное затмение, вы можете откат один раз, затем отложить эти изменения, затем экспортировать несколько последовательных коммитов в виде патчей, удалить эти коммиты, а затем импортировать эти патчи в том же порядке, чтобы на случай, если у вас возникли конфликтующие исправления, они переписывают друг друга желаемым образом.

Наконец, вы можете перенести свой первый откат. Это достигает такого же эффекта, как если бы вы откатывались назад более одного раза.