Git:如何configurationKDiff3作为合并工具和diff工具

最近我使用GitExtension 2.46,但是具有相同的Git版本是1.9.4.msysgit.2。 只愿意使用Git命令,我卸载了GitExtension并安装了最新版本的Git和KDiff3 。

当我合并并发生冲突时,我运行以下命令:

$ git mergetool 

然后我收到消息:

合并工具kdiff3不可用作'kdiff3'。

我想这肯定是由KDiff3的path。

环境

  • 操作系统:Windows 10
  • Git 2.6.1.windows.1
  • KDiff3 0.9.98(64位)

问题:

  • 我需要在.gitconfig文件中为$ git mergetool命令configuration什么,才能打开版本为LOCALREMOTEBASEMEDED的冲突文件的KDiff3 GUI?

  • 如何configuration它使用它有差异工具?

这些网站是非常有帮助的,差不多, mergetool和difftool 。 我使用了全局configuration,但可以在没有问题的情况下使用存储库。 您只需执行以下命令:

 git config --global --add merge.tool kdiff3 git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe" git config --global --add mergetool.kdiff3.trustExitCode false git config --global --add diff.guitool kdiff3 git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe" git config --global --add difftool.kdiff3.trustExitCode false 

trustExitCode选项的使用取决于diff工具返回时要执行的操作。 从文档 :

git-difftool在每个文件上分别调用diff工具。 默认情况下,diff工具报告的错误将被忽略。 当被调用的diff工具返回一个非零的退出代码时,使用–trust-exit-code使git-difftool退出。

只是为了扩展@ Joseph的答案 :

在应用这些命令之后,你的全局.gitconfig文件将具有以下几行(为了加速这个过程,你可以把它们复制到文件中)

 [merge] tool = kdiff3 [mergetool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe trustExitCode = false [diff] guitool = kdiff3 [difftool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe trustExitCode = false 

那么,问题是git无法在%PATH%中findkdiff3。

在典型的unix安装中,所有可执行文件都驻留在几个众所周知的位置( /bin//usr/bin//usr/local/bin/ etc),只需在shell处理器中input它的名字即可调用程序cmd.exe :))。

在MS Windows程序通常安装在专用path中,所以你不能简单地在cmd会话中键入kdiff3并运行kdiff3。

困难的解决scheme:你应该通过指定kdiff3.exe完整path来告诉git在哪里可以findkdiff3。 不幸的是,git在其configuration中并不喜欢path规范中的空格,所以最后一次我需要这个,最后我用了古老的“C:\ Progra〜1 … \ kdiff3.exe”,好像是在九十年代后期:)

简单的解决scheme:编辑您的计算机设置,并将包含kdiff3.exe的目录添加到%PATH%。 然后testing是否可以通过名称从cmd.exe调用它,然后运行git。