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什么,才能打开版本为LOCAL , REMOTE , BASE和MEDED的冲突文件的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。