如何使git与vimdiff和trustExitCode一起使用

问题描述

|| 我已将ѭ0配置为git的mergetool。每当我进行合并时,git都不会询问合并是否成功。我也尝试过:
git config --global mergetool.vimdiff.trustExitCode false
没什么区别。在我将Vimdiff保留为
:wqa
之后,我不得不手动删除过时的
*.orig
文件,仍然没有问题。 可能相关:当我显示配置设置
trustExitCode
时,驼峰箱不再显示
git config --global -l
core.editor=vim
core.autocrlf=input
merge.tool=vimdiff
alias.co=checkout
alias.st=status
color.diff=auto
color.status=auto
color.branch=auto
mergetool.vimdiff.trustexitcode=false
如何解决?     

解决方法

        我知道这是一个老问题,但是我遇到了同样的问题。 关于手动删除陈旧备份文件的部分可以通过以下方式修复:
git config --global mergetool.vimdiff.keepBackup false
我认为另一个问题是
trustExitCode
并没有按照您的想法做:   
mergetool.<tool>.trustExitCode
     对于自定义合并命令,请指定是否可以使用merge命令的退出代码来确定合并是否成功。如果未将其设置为true,则检查合并目标文件时间戳,如果文件已更新,则假定合并成功,否则将提示用户指示合并成功。 因此,即使将此选项设置为false,它也只会在文件未更改的情况下提示您。     ,        我知道这并不是您问题的真正答案,但我认为您应该签出一个名为Fugitive的vim插件。 甚至还有关于解决与vimdiff合并冲突的视频 它基本上提供了您在终端中找到的所有(或大部分)git功能,但是在vim中以一种真正有意义的方式提供了它。希望有帮助,祝你好运:D。     ,        设置了
trustExitCode
(似乎是
vimdiff
的默认值),您将需要使用非零退出代码退出vim,以便git识别未合并的文件。 在vim中,这意味着使用ѭ12退出。请注意,ѭ13的行为类似于
:qall!
,这意味着它会静默丢弃所有未保存的更改并退出vim(使用非零退出代码)。 这样做时(git v2.14.2.windows.1; git bash; vim 8.0.606)git写入
merge of exampleFile.cpp failed
Continue merging other unresolved paths [y/n]?
并且它使文件处于冲突状态。如果我以ѭ14退出,则冲突可能仍在文件中,但是git会将其标记为已解决。 至于为什么在使用
trustExitCode = false
时git仍然接受它作为解析,我有点不确定。使用
git mergetool
打开文件时,时间戳会更新为当前时间,这似乎表明vimdiff(或git)正在触摸文件。这可能是git不会要求确认冲突解决方案的原因,因为它会看到更新的时间戳并假定文件已解决。