Как я могу откатить одно изменение в Mercurial? - PullRequest
4 голосов
/ 18 февраля 2010

Я внес изменение в файл в моем ртутном проекте, который я хотел бы откатить, но я хотел бы сохранить некоторые изменения, которые произошли после него:

Revision 1: Original
Revision 2: A change I made in error
Revision 3: A change I want to keep

Я хочу откатить ТОЛЬКО изменения в редакции 2, оставив примененными 1 и 3, и создать новую редакцию 4. Какой самый «меркуриальный» способ сделать это?

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

Ответы [ 2 ]

5 голосов
/ 18 февраля 2010

Я думаю, что если вы просматриваете журнал изменений для проекта (чтобы вы могли видеть все ревизии), вы можете выбрать одну ревизию и использовать команду возврата, чтобы отменить ее.

(У меня нет ничего под рукой, чтобы проверить это, так что это может быть неправильно.)

1 голос
/ 18 февраля 2010

Вы также можете использовать патчи mq для редактирования своей недавней истории. Следующая последовательность команд сделает свое дело:

hg qinit               # initialises a queue
hg qimport -r2:TIP     # moves revisions from 2 onwards into patch management
hg qpop -a             # unapplies patches, leaving your actual checkout at r1
hg qrm 2.diff          # deletes the r2 patch (forever)
hg qpush -a            # applies all remaining patches again (i.e. the r3 patch)
hg qfinish -a          # moves applied patches back into official repository history

Подобные вещи отлично подходят для исправления ошибки в вашем локальном репозитории, но, поскольку вы изменяете историю , убедитесь, что вы не давили на кого-то другого (или они не тянули от вас) оригинальная версия, прежде чем исправить это.

Если я правильно понимаю, hg backout вместо этого передаст новый патч, который отменяет предыдущие изменения, сохраняя изменения в вашей истории. Это более безопасный вариант, но менее приятный, если вы часто делаете локальные ошибки (как я).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...