如何解决这场Mercurial冲突?

Nik*_*ntz 11 merge mercurial kdiff3 merge-conflict-resolution

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

KDiff3

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

Mar*_*ler 24

您需要查看KDiff3文档,特别是有关合并和输出窗口的部分.要解决此冲突,你需要决定是否live或者january是该行的正确选择.这个决定是你的决定,没有工具可以知道你是否意味着一个或另一个.

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

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

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

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

[ui]
merge = internal:merge
Run Code Online (Sandbox Code Playgroud)

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

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

$ hg resolve --tool internal:local your-file
Run Code Online (Sandbox Code Playgroud)

或其他版本:

$ hg resolve --tool internal:other your-file
Run Code Online (Sandbox Code Playgroud)

您完全重新启动合并hg resolve your-file.在提交文件之前,需要将文件标记为"已解决".这是完成的hg resolve --mark your-file.请参阅参考hg resolve --list当前合并的状态.

  • @NickPierpoint:我完全同意--KDiff3不是一个非常漂亮或直观的工具,需要一段时间才能适应它. (2认同)

小智 21

Base是本地系统中的先前版本,Parent 1是您当前的更改,parent 2是来自服务器的文件.

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

  • 谢谢!你怎么知道"base"是以前的版本?谷歌搜索了一个小时关于神秘和毫无意义的"基地","父母1","父母2"的话,天​​啊! (6认同)