Ваша команда не будет делать то, что вы хотите - возврат выполняет только один набор изменений.
Однако существует довольно много способов отменить три смежных набора изменений, и все действительно зависит от того, что вы хотитеосталось в вашем графике истории.
Самый быстрый способ будет выглядеть так:
hg diff -r 102 -r 99 | hg import --no-commit -
, который говорит: «Возьмите разницу между 102 и 99 (обратите внимание на обратный порядок) и примените ее в качестве патча.После этого вы должны проверить рабочий каталог и, если хотите, сделать hg commit --addremove
.
Недостатком является то, что ваш график истории будет выглядеть так:
--[99]---[100]---[101]---[102]---[103]
Где 103является отрицательным значением комбинированного изменения 100, 101 и 102. Это не показывает, что на самом деле произошло.
Лучше было бы hg update 99
сделать коммит, любой коммит, так что теперь ваша история выглядит так:
--[99]---[100]---[101]---[102]
\
[103]---
, а затем выполните hg --config ui.merge=internal:local merge 102
, который объединяет 102 в 103, но не принимает никаких изменений из 100, 101, 102.
Это сделает вашу историю похожей на:
--[99]---[100]---[101]---[102]
\ \
[103]-------------------[104]
который мне понятнееговорит, что случилось.Однако любой из них работает.
Или, возможно, вы могли бы просто сделать:
hg backout 102
hg backout 101
hg backout 100
, который делает вашу историю:
--[99]---[100]---[101]---[102]---[103]---[104]---[105]
Где 103, 104 и 105, гдеинверсии 102, 101 и 100 соответственно, но это просто глупо.