Похоже, вы ищете backout. Видеть:
hg help backout
Я не думаю, что он может отменить несколько коммитов за один раз, поэтому вам нужно отменить их по отдельности:
hg backout D
hg backout C
hg backout B
Это создаст три коммита поверх D, которые обратны D, C и B. Если вы хотите объединить эти коммиты в один набор изменений, вы можете свернуть их, используя rebase --collapse или одно из ряда других расширений (например, расширения histedit или mq или collapse).
Если вы не хотите отменять отдельные изменения, а хотите сделать все за один раз, вы можете сделать следующее:
hg update A
hg debugsetparents D
hg commit -m "revert B-D"
Это некрасиво, но это работает. Однако это не записывает переименования в обратном порядке. Однако, если честно, я бы не рекомендовал делать это, если вам нужно так много отступать, что отдельные команды отката слишком сложны для ввода, это заставляет меня задаться вопросом, действительно ли откат - это то, что вы должны делать для этого конкретного кейс.
В качестве альтернативы вы можете поступить так, как предложили Джим и Рафаэль, и решить, что B, C и D находятся в ветке, обновиться до A и продолжить фиксацию там (отделив историю в этот момент). Это может быть более подходящим.
person
Laurens Holst
schedule
23.07.2012