让我们假设它已执行合并“放弃所有来自合并的更改...”选项,事故。
这个错误的提交已经提交到“中央”存储库。
如果我需要以正确的方式合并分支更改,如何处理这种情况?
重现案例的命令:
hg init mr
cd mr
echo "123" > file.txt
hg add
hg ci -m "initial"
hg branch br
echo "234" >> file.txt
hg ci -m "in branch"
hg up default
echo "567" >> file.txt
hg ci -m "in default"
在这些命令打开tortoisehg之后,将第二个修订版(默认头部)与br
分支合并为“Discard ...”选项。
UPD :
这是一个关于做相反How to merge to get rid of head with Mercurial command line, like I can do with TortoiseHg?; - )
的问题但仍无法找到如何恢复该步骤: - (
答案 0 :(得分:2)
一种方法是重做合并,然后用discard进行另一次合并。
在您的示例中,更新回第二个版本(在执行错误合并之前当前工作目录为父版本),然后重新与该另一个分支合并。这次做得恰到好处。
这会给你另一个头。
然后,合并旧的,不正确的合并,并选择放弃。现在,您已经有效地绕过了这个合并。
如果您不确定这些步骤,请进行本地克隆和实验,您可以随时丢弃并重新停留并重试。
修订版3是旧的,不正确的合并,我选择了丢弃。合并4和5后,合并的痕迹消失了,一切都恢复正常。是的,历史看起来有点时髦,但相信我,完全摆脱糟糕合并的清理程序远比你历史时间线上的小小的更糟糕。
在拙劣的合并之后,基本上你有这种情况:
+-- 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如何显示: