最近我在使用GitExtension 2.46,但是Git版本是1.9.4.msysgit.2。为了只使用Git命令,我卸载了GitExtension并安装了最新版本的Git和KDiff3。
当我进行合并并且有冲突时,我运行以下命令:
git mergetool
然后我收到了这样的信息:
合并工具kdiff3不能作为'kdiff3'使用。
我猜它肯定是通过KDiff3路径。
环境
操作系统:Windows 10
Git 2.6。1 windows。
KDiff3 0.9.98(64位)
问题:
我必须在.gitconfig文件中配置git mergetool命令,以打开带有冲突文件的LOCAL、REMOTE、BASE和MERGED版本的KDiff3 GUI ?
我如何配置它来使用它作为一个差异工具?
好吧,问题是Git无法在%PATH%中找到KDiff3。
在典型的Unix安装中,所有可执行文件都位于几个众所周知的位置(/bin/, /usr/bin/, /usr/local/bin/等),你可以通过在shell处理器中键入程序名称来调用程序(例如cmd.exe)。
在微软Windows中,程序通常安装在专用路径中,因此不能简单地在cmd会话中键入kdiff3并让kdiff3运行。
困难的解决方案:您应该通过指定KDiff3 .exe的完整路径来告诉Git在哪里可以找到KDiff3。不幸的是,Git不喜欢在它的配置中的路径规范中使用空格,所以最后一次我需要这个,我最终得到了那些古老的“C:\Progra~1…\kdiff3.exe”,就好像它是90年代末一样:)
简单的解决方案:编辑您的计算机设置并在%PATH%中包含kdiff3.exe目录。然后测试是否可以从cmd.exe中通过名称调用它,然后运行Git。
这些网站非常有用,mergetool和difftool。我使用了全局配置,但是可以被存储库毫无问题地使用。您只需要执行以下命令:
git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/bin/kdiff3.exe"
git config --global mergetool.kdiff3.trustExitCode false
git config --global diff.guitool kdiff3
git config --global difftool.kdiff3.path "C:/Program Files/KDiff3/bin/kdiff3.exe"
git config --global difftool.kdiff3.trustExitCode false
注意,最新版本kdiff3将可执行文件从应用程序文件夹C:/Program Files/ kdiff3的根目录移动到应用程序文件夹中的bin/文件夹。如果您使用的是旧版本,请从上面的路径中删除“bin/”。
使用trustExitCode选项取决于当diff工具返回时你想做什么。从文档:
Git-difftool在每个文件上分别调用一个diff工具。默认情况下,diff工具报告的错误将被忽略。当调用的diff工具返回非零退出码时,使用——trust-exit-code使git-difftool退出。