让我们假设它是通过“放弃合并中的所有更改...”选项执行合并的,但是意外。
并且这个错误的提交已经被提交到“中央”存储库中。
如果我该怎么处理这个案子need以正确的方式合并分支更改?
重现案例的命令:
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
带有“放弃...”选项的分支。
UPD:
这是一个关于做相反的事情的问题如何使用 Mercurial 命令行合并以摆脱头部,就像我可以使用 TortoiseHg 那样? https://stackoverflow.com/questions/4197744/how-to-merge-to-get-rid-of-head-with-mercurial-command-line-like-i-can-do-with-t ;-)
但仍然找不到如何恢复该步骤:-(
一种方法是重做合并,然后再进行一次合并并丢弃。
在您的示例中,更新回第二个修订版(执行错误合并之前的当前工作目录父目录),然后与其他分支重做合并。这次一定要好好做。
这会给你另一个头。
然后,与旧的、不正确的合并合并,并选择丢弃。现在您已经用正确的合并有效地绕过了这一合并。
如果您不确定这些步骤,请进行本地克隆并进行实验,您始终可以放弃它并重新克隆并重试。
修订版 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 的显示方式如下:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)