Mercurial:回顾性地合并修订版

时间:2014-01-15 17:08:21

标签: mercurial merge meld

我刚刚被一位开发人员问过,当合并窗口出现时,他们是否需要做任何事情。显然他们的默认行动就是立即关闭窗口。

无论如何,我们现在处于这样一种情况:他们对许多文件进行了微小的更改,而另一个开发人员进行了大量的更改。然后他们“合并”它们,基本上退出对文件的所有远程更改,提交代码,并推送到中央存储库。

所以我们处于这样的情况:我们想要的是修改版本x,修改版本y是我们想要的更改,修订版本z是x + y的合并,但实际上只包含y中的代码。

现在有办法回溯到合并工具吗?

我想运行一个命令并获得一个融合窗口,让我合并回来从y到当前版本的更改。

1 个答案:

答案 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扩展名来查看图表的状态。

我再一次在玩具库中对此进行了测试。 首先备份它!