Я опишу, что бы я сделал, если бы я хотел откатить два последних коммита.
Полагаю, вы еще не перешли на Bitbucked. Я также предполагаю, что у вас есть эти наборы изменений поверх вашей DAG:
o C: Deleted files FILE1 and FILE2
|
o B: Some nice changes; also added large files FILE1 and FILE2
|
o A: Some good changeset
Здесь C
следует полностью удалить, B
следует отредактировать (FILE1
и FILE2
дополнения следует откатить), а A
и ниже следует оставить без изменений.
Предостережение : это работает только в том случае, если B
и C
еще не были перенесены в Bitbucked (или любой другой публичный репозиторий).
Для этого вам нужно включить расширение MQ. Для этого добавьте эти строки в файл .hg/hgrc
в вашем репо:
[extensions]
mq=
Steps
Сначала я раздеваю C
:
$ hg strip C
Теперь C
уничтожен, а родительский B
. Я импортирую B
как Mercurial Queues patch , чтобы отредактировать его:
$ hg qimport -r B -n B.patch
Теперь у меня есть один патч поверх нашей очереди, который был создан из B
. Я удаляю большие файлы и обновляю патч:
$ hg forget FILE1 FILE2
$ hg qrefresh
Теперь B.patch
больше не включает большие файлы. Тем не менее, они все еще находятся на диске, хотя и не контролируются Bu Mercurial. Теперь я заканчиваю свою работу с MQ:
$ hg qfinish -a
Вот что у меня есть на данный момент:
o B1: Some nice changes, no big files here
|
o A: Some good changeset