我花了一些时间配置git (git版本2.33.5 .windows.1)使用WinMerge(2.16.20)作为外部difftool。这篇文章是我的切入点,这个要点似乎对一些人有所帮助。我还是运气不好。
$ git config --global --list
...
diff.tool=winmerge
difftool.winmerge.prompt=false
difftool.winmerge.trustexitcode=true
difftool.winmerge.cmd=.... (different versions see below)
--------------------------------------------------------------------------------
Example
cmd = "/c/Program\ Files\ \(x86\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE
cmd = "C:\Program Files (x86)\WinMerge\WinMergeU.exe" -u -e "$LOCAL" "$REMOTE"
问题1:在这篇文章中,作者提到了git的2.5版本。但是官方发布的最新版本是2.36。从2015年开始,windows似乎会发布2.5版本。这是实验性的吗?或者不是官方的?
问题2:有人能解释一下git difftool
在幕后做了什么吗?是否有一种方法可以在git之外模拟调用,以便我可以更好地调试它?也许有人也有这个问题,可以解释他是如何调试这个问题的
我没有错误信息(似乎得到吞咽…)
在gitconfig中编写正确的Windows路径的空格,斜杠和反斜杠是一场噩梦。为了避免这种情况,将c:Program Files (x86)WinMerge
添加到系统变量Path
(谷歌windows how to edit system variables
)中,这样我们就可以直接在命令行中调用路径下的可执行文件(在您的情况下是WinMergeU.exe
),而不是它的绝对路径。
更新Path
后,重新打开git-bash重新加载它。运行git config --global -e
编辑difftool.winmerge.cmd
[difftool "winmerge"]
cmd = WinMergeU.exe -u -e "$LOCAL" "$REMOTE"
要测试它是否有效,请输入git存储库并运行git difftool HEAD^ HEAD
。您可以尝试其他git diff
命令,将git diff
替换为git difftool
。