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

laj*_*jos 36 merge mercurial conflict dvcs

我使用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
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何解决这个问题.Google搜索结果指示使用:

hg resolve
Run Code Online (Sandbox Code Playgroud)

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

hg: unknown command 'resolve'
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个冲突?

Dav*_*kes 79

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

对于Hg 1.1+手动修复文件,然后执行

hg resolve -m test.h
Run Code Online (Sandbox Code Playgroud)

将文件标记为已合并.

  • Dori,我会在那个grep的末尾添加一个$,这样你就不会意外地捕捉到你不想要的东西. (2认同)

ava*_*kar 14

仅对hg <v1.1有效

无需调用任何hg命令.与此不同svn,Mercurial不会跟踪冲突的文件.如果你打电话hg status,你会发现文件只是标记为已修改.

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

  • 如果你只是编辑文件然后提交,它可能不会被识别为两个分支的合并,只是你工作的一个新提交.我认为你必须手动修复文件,然后执行**hg resolve -m test.h**将文件标记为已合并. (18认同)
  • *注*此答案适用于hg pre 1.1. (8认同)

Mar*_*ler 10

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

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