1

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

无论如何,我们现在的情况是,他们对许多文件进行了细微更改,而另一个开发人员进行了大量更改。然后他们“合并”它们,实质上是撤销对文件的所有远程更改,提交代码,并推送到中央存储库。

所以我们的情况是,版本 x 包含我们想要的更改,版本 y 包含我们想要的更改,版本 z 是 x+y 的合并,但实际上只包含来自 y 的代码。

现在有没有办法回顾性地回到合并工具?

我想运行一个命令并打开一个融合窗口,让我将 y 的更改合并回当前版本。

4

1 回答 1

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您可以使用非常有用的扩展来查看图表的状态。

再一次,我在一个玩具存储库上对此进行了测试。先备份一下!

于 2014-01-15T18:28:46.293 回答