Git 无法解决 rebase 冲突,因为合并工具未弹出。

3

我正在当前分支'MyUseCaseTest'中执行一次rebase操作,目标是与主分支进行合并。

在此过程中,我遇到了合并冲突,我尝试使用配置好的mergetool(即vsdiffmerge)来解决冲突。这是.gitconfig文件:

[diff]
    tool = vsdiffmerge
[difftool]
      prompt = false
[difftool "vsdiffmerge"]
      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t
      keepbackup = false
      trustexitcode = true
[merge]
      tool = vsdiffmerge
[mergetool]
      prompt = false
[mergetool "vsdiffmerge"]
      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$REMOTE" "$LOCAL" "$BASE" "$MERGED" //m
      keepbackup = false
      trustexitcode = true

以下是我尝试使用的命令,以便打开vsdiffmerge工具:

git mergetool
git mergetool -t vsdiffmerge

但实际上他们没有这么做,而是返回了以下错误信息。
$ git mergetool -t vsdiffmerge
Merging:
src/OneDirection.cs
src/CustomBatch.cs

Normal merge conflict for 'src/OneDirection.cs':   
{local}: modified file   
{remote}: modified file 
/libexec/git-core/git-mergetool--lib: line 136: fg: no job control 
merge of src/OneDirection.cs failed 
Continue merging other unresolved paths (y/n) ?

我点击“是”后,遇到了同样的错误,但是这次是针对另一个文件。我不知道出了什么问题,也不知道怎么解决。手册中没有解释这种情况。我找不到任何可以解释正在发生的事情或如何解决它的东西。
请帮忙。

请记住,rebase 应用多个提交时会顺序执行,因此如果每个后续提交都产生/复制冲突,则可能会反复看到相同的冲突或相同的文件冲突。如果提交数量可管理,则可以通过合并来解决它们。(这可能不是您的问题,但我曾经遇到过描述的情况。) - lostphilosopher
我认为这也可能是我的合并工具的问题,但我不能确定。有没有办法配置两个不同的合并工具? - user20358
1
尝试使用完整路径,例如 "C:/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/vsdiffmerge.exe"。完整路径对我有效。 - orad
2个回答

1

我遇到了类似的问题,orad的回答让我找对了方向 - 路径是问题所在(我还不习惯使用Linux风格的路径...),最终可行的解决方法是:

[diff]
    tool = vsdiffmerge
[difftool]
  prompt = false
[difftool "vsdiffmerge"]
    cmd = \"C:/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/vsdiffmerge.exe\" "$LOCAL" "$REMOTE" //t
    keepbackup = false
    trustexitcode = true
[merge]
    tool = vsdiffmerge
[mergetool]
    prompt = false
[mergetool "vsdiffmerge"]
    cmd = \"C:/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/vsdiffmerge.exe\" "$REMOTE" "$LOCAL" "$BASE" "$MERGED" //m
    keepbackup = false
    trustexitcode = true

虽然使用%VSINSTALLDIR%可以避免使用绝对文件路径,但这确实非常方便。感谢Mark Kadlec展示了正确的语法。

-2

一旦出现冲突,您可以简单地打开该文件并搜索HEAD以查看冲突的位置,并手动解决它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接