如何解决这场Mercurial冲突?

时间:2012-01-25 13:35:14

标签: mercurial merge merge-conflict-resolution kdiff3

我对Mercurial和Python感到沮丧,因为它让事情变得简单。我有一个微不足道的冲突,因为Mercurial没有给出任何建议,我甚至不知道如何解决这个琐碎的文件冲突:

KDiff3

冲突是微不足道的,但如果我无法解决这个问题,我也无法解决任何复杂问题。我可以将文件编辑为我想要的方式并从任何地方再次提交吗?我应该运行hg merge吗?为什么Mercurial甚至不能让我选择一个版本来保留?如果不挖掘1000篇写得不好的联机帮助页,为什么几乎不可能做到这一点?

2 个答案:

答案 0 :(得分:24)

您需要查看KDiff3 documentation,特别是merging and the output window部分。要解决冲突,您需要确定livejanuary是否适合该行。这个决定是你的决定,没有工具可以知道你是否意味着其中一个。

在KDiff3,按控制 + 2 选择live,按控制 + 3 选择january或右键单击底部窗口的边距,然后选择所需的行。您也可以单击底部窗口并手动编辑该行。

Mercurial让你configure your merge tool以任何你喜欢的方式。 TortoiseHg附带一个默认配置,将KDiff3置于列表的顶部,但如果您愿意,可以使用其他工具。合并工具实际上只是一个接受四个文件名的程序:要比较的三个文件(base,parent 1,parent 2)和输出文件名。

要解决命令行上的冲突,您需要启动合适的命令行三向合并工具。例如,如果您愿意,可以merge with vim。 (我担心我对vimdiff一无所知,我自己也用KDiff3。)

如果您不希望弹出合并工具,则可以设置

[ui]
merge = internal:merge

使Mercurial仅使用内部三向合并。当编辑没有冲突时,它将合并文件。发生冲突时,文件将标记为“未解析”,冲突标记将存储在文件中。

然后,您需要手动编辑文件以获取所需的版本。您还可以重新合并并选择本地(您的)版本:

$ hg resolve --tool internal:local your-file

或其他版本:

$ hg resolve --tool internal:other your-file

您使用hg resolve your-file完全重新启动合并。在提交文件之前,需要将文件标记为“已解决”。这是通过hg resolve --mark your-file完成的。有关当前合并的状态,请参阅hg resolve --list

答案 1 :(得分:21)

Base是本地系统中的先前版本, 父1是你当前的变化, parent 2是来自服务器的文件。

如果您需要进行更改,请在合并菜单中的任意位置选择B. 如果您想在本地计算机中使用最新的服务器版本,请在合并菜单中随处选择C.