Один из способов состоит в том, чтобы повторить слияние и сделать еще одно слияние с отбрасыванием.
В вашем примере обновите обратно до 2-й ревизии (текущего родителя рабочего каталога до того, как вы произвели неудачное слияние),затем повторите объединение с этой другой веткой.Сделайте это правильно в этот раз.
Это даст вам еще одну голову.
Затем объединитесь со старым, неправильным объединением и выберите сброс на этом.Теперь вы эффективно обошли это слияние с правильным.
Если вы не уверены в шагах, сделайте локальный клон и поэкспериментируйте, вы всегда можете просто отказаться от него, откатиться и попробовать снова.
Редакция 3 - это старое неправильное слияние, где я выбрал сброс.После выполнения слияния 4 и 5 следы этого слияния исчезли, и все вернулось в рабочее состояние.Да, история выглядит немного странно, но, поверьте мне, процедуры очистки, чтобы полностью избавиться от этого плохого слияния, намного хуже, чем маленький всплеск на вашей временной шкале истории.
В основном, у вас есть этот сценарий после неудачногоmerge:
+-- botched merge
v
0---2---3
\ /
1---+
Итак, вы обновляетесь до родительской папки рабочей папки, которая была у вас до неудачного слияния, и выполняете еще одно слияние, на этот раз правильно.Теперь это выглядит следующим образом:
+-- botched merge
v
0---2---3
\ \ /
\ x
1-+-4
^
+-- good merge
Ваша рабочая папка теперь в редакции 4, поэтому вы делаете еще одно объединение, на этот раз с редакцией 3 (неправильное объединение), и выбираете отменить эти изменения, иВы получаете это:
+-- botched merge
v
0---2---3-5 <-- final merge, discard 3
\ \ / /
\ x /
1-+-4
^
+-- good merge
Вот как TortoiseHg показывает это: