Откат не то, что вы описываете. Если до операции ваш репо выглядел так:
[A]-[B]-[C]-[D]
и после тяги это выглядело так:
[A]-[B]-[C]-[D]
\
-[E]-[F]
и после слияния это выглядело так:
[A]-[B]-[C]-[D]-----[G]
\ /
-[E]-[F]
тогда вы не хотите отменять извлечение - вам все еще нужны наборы изменений E и F - вы просто хотите сделать еще одну попытку при объединении, G.
Есть несколько способов сделать это. Самый Mercurial способ сделать это просто сделать:
hg update D
hg merge E
... re-merge, doing it better this time ...
hg commit # creates H
Тогда ваша история будет выглядеть так:
[A]-[B]-[C]-[D]-------- [G]
\ X
-[E]-[F]-----[H]
где этот X - пересечение. Затем вы будете использовать H в качестве новой точки развития и игнорировать (или закрыть G).
Во-вторых, лучше всего удалить G, а затем снова выполнить слияние. Официальный способ сделать это - локально клонировать ваш репозиторий, получив все, кроме G, вот так:
cd ..
hg clone -r tip-1 myrepo mynewrepo
где у вас тогда будет все в mynewrepo, кроме G. Затем вы можете заново объединить. Команда strip также работает, но по какой-то причине она отключена.
Суть в том, что вам не нужно удалять и повторять тягу; просто слияние.