我对 Mercurial 和 Python 感到沮丧,因为它使简单的事情变得困难。我有一个微不足道的冲突,因为 Mercurial 没有给出任何建议,我什至不知道如何解决这个微不足道的文件冲突:
冲突是微不足道的,但如果我无法解决这个问题,我也无法解决任何复杂的问题。我可以按照我想要的方式编辑文件并从任何地方再次提交吗?我应该运行 hg merge
吗?为什么 Mercurial 甚至不能让我选择要保留的版本?为什么不仔细阅读 1000 个写得不好的联机帮助页,几乎不可能做一些微不足道的事情?
最佳答案
您需要查看 KDiff3 documentation ,特别是关于 merging and the output window 的部分。要解决冲突,您需要确定 live
或 january
是否是线路的正确选择。该决定由您做出,没有任何工具可以知道您是指哪个。
在 KDiff3 中,按 Ctrl + 2 选择 live
,按 Ctrl + 3 选择 january
或右键单击底部窗口的边距并选择所需的行。您也可以单击底部窗口并手动编辑该行。
Mercurial 让你以任何你喜欢的方式 configure your merge tool。 TortoiseHg 附带的默认配置将 KDiff3 放在列表的顶部,但如果您愿意,也可以使用其他工具。合并工具实际上只是一个接受四个文件名的程序:要比较的三个文件(基本文件、父文件 1、父文件 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
。关于mercurial - 如何解决这个 Mercurial 冲突?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9003588/