【问题标题】:How to resolve merging conflicts in Mercurial (v1.0.2)?如何解决 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'

我该如何解决这个冲突?

【问题讨论】:

  • 我认为您必须将另一个答案标记为正确答案..

标签: mercurial merge dvcs conflict


【解决方案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 将其标记为已解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2012-03-01
    • 1970-01-01
    • 2020-12-17
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多