我刚刚被一位开发人员问过,当合并窗口出现时,他们是否需要做任何事情。显然他们的默认行动就是立即关闭窗口。
无论如何,我们现在处于这样一种情况:他们对许多文件进行了微小的更改,而另一个开发人员进行了大量的更改。然后他们“合并”它们,基本上退出对文件的所有远程更改,提交代码,并推送到中央存储库。
所以我们处于这样的情况:我们想要的是修改版本x,修改版本y是我们想要的更改,修订版本z是x + y的合并,但实际上只包含y中的代码。
现在有办法回溯到合并工具吗?
我想运行一个命令并获得一个融合窗口,让我合并回来从y到当前版本的更改。
答案 0 :(得分:3)
首先,在某处克隆您的存储库,并在那里测试这些说明。我在一个非常小的存储库上测试了它们,所以我可能忽略了一些东西。
hg clone yourrepo testrepo
cd testrepo
您可以查看修订版x的代码,然后重复合并。这会给你一个新的头脑。然后,如果您之后没有进行更改,则可以使用hg strip
来删除错误的更改。如果你不想冒这个条带冒险,那么合并两个头,告诉hg将代码的版本保留在好的版本中。如果你已经检查了它,就像你在制作它之后立即检查一样,然后给出参数-t internal:local
以丢弃另一个,不好的,头部的变化。这比解释简单得多:
hg update x
hg merge -r y
hg commit -m 'Redo the merge.'
然后:
hg strip z
或:
hg merge -t internal:local -r z
hg commit -m 'Get rid of the bad merge.'
您可以使用非常有用的hg view
扩展名来查看图表的状态。
我再一次在玩具库中对此进行了测试。 首先备份它!