【问题标题】:git cant resolve rebase conflicts as mergetool doesnt pop upgit 无法解决 rebase 冲突,因为没有弹出 mergetool
【发布时间】:2015-08-30 22:54:40
【问题描述】:

我正在使用主分支在当前分支“MyUseCaseTest”中执行变基。

我遇到了合并冲突,我尝试使用我配置的合并工具 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 按顺序应用多个提交,因此如果每个后续提交都产生/重现冲突,则可能会重复看到相同的冲突或相同的文件冲突。如果有可管理的提交数量,您也许可以通过它们合并。 (这可能不是你的问题,但我所描述的情况已经发生在我身上。)
  • 我认为这也可能是我的合并工具的问题,但我不能确定。有没有办法配置两个不同的合并工具?
  • 尝试使用完整路径,例如"C:/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/vsdiffmerge.exe"。完整路径对我有用。

标签: git visual-studio merge git-merge rebase


【解决方案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 即可查看冲突位置并手动解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-27
      • 2011-12-16
      • 2020-03-02
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多