如何解决 Mercurial (v1.0.2) 中的合并冲突?

Posted

技术标签:

【中文标题】如何解决 Mercurial (v1.0.2) 中的合并冲突?【英文标题】:How to resolve merging conflicts in Mercurial (v1.0.2)? 【发布时间】:2010-10-22 05:48:52 【问题描述】:

我有一个合并冲突,使用 Mercurial 1.0.2:

merging test.h
warning: conflicts during merge.
merging test.h failed!
6 files updated, 0 files merged, 0 files removed, 1 files unresolved
There are unresolved merges, you can redo the full merge using:
  hg update -C 19
  hg merge 18

我不知道如何解决这个问题。谷歌搜索结果指示使用:

hg resolve

但由于某种原因,我的 Mercurial (v1.0.2) 没有解析命令:

hg: unknown command 'resolve'

我该如何解决这个冲突?

【问题讨论】:

我认为您必须将另一个答案标记为正确答案.. 【参考方案1】:

在 Hg 1.1+ 的评论中突出显示答案:

对于 Hg 1.1+ 手动修复文件,然后再做

hg resolve -m test.h

将文件标记为合并。

【讨论】:

同样的问题。那么如何处理 .orig 文件呢? 这是一个很好的快速方法hg st -un | grep 原始 | xargs rm Dori,我会在那个 grep 的末尾加一个 $,这样你就不会意外地捕捉到你不想要的东西。【参考方案2】:

仅适用于 hg

无需调用任何hg 命令。与svn 不同,Mercurial 不跟踪冲突文件。如果您调用hg status,您会看到该文件被简单地标记为已修改。

只需手动修复文件并提交即可。

【讨论】:

所以看起来 Mercurial 将我的本地副本移动到 test.h.orig 并且 test.h 现在来自另一个头......有没有办法阻止创建 .orig 文件所以它不会被意外添加? 我不确定这是否可行,但您可以将 *.orig 添加到您的 .hgignore 文件中。 如果您只是简单地编辑文件然后提交,它可能不会被识别为两个分支的合并,而只是您工作分支的新提交。我认为您必须手动修复文件,然后执行 hg resolve -m test.h 将文件标记为合并。 注意此答案适用于 hg pre 1.1。 @lajos 你能接受下面的(现在)正确答案吗?【参考方案3】:

在Mercurial 1.1 中引入了跟踪冲突,这是您正在使用的较新版本(您应该真正升级,Mercurial 1.1。于 2008 年 12 月发布)。 在那个版本中,您获得了resolve 命令,其工作方式类似于svn resolve

我记得,除非您配置了 merge tool,否则当发生冲突时,Mercurial 会在您的文件中留下合并标记(<<<<>>>> 行)。这也适用于较新的版本——我没有配置合并工具并在发生冲突时获取合并标记。然后我可以手动修复该文件并使用hg resolve 将其标记为已解决。

【讨论】:

以上是关于如何解决 Mercurial (v1.0.2) 中的合并冲突?的主要内容,如果未能解决你的问题,请参考以下文章

Kong v1.0.2 的自定义插件已启用但未安装

使用Mercurial&Tortoisehg

Kong(v1.0.2)认证

如何在Mercurial中验证和实施提交消息?

Kong(V1.0.2) Clustering Reference

我应该如何在Mercurial存储库中设置我的Visual Studio项目/解决方案?