如何解决如何使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不会要求确认冲突解决方案的原因,因为它会看到更新的时间戳并假定文件已解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。