如何调试 git difftool 命令(WinMerge,git on windows)

How to debug git difftool command ( WinMerge , git on windows)

我花了一些时间来配置 git(git 版本 2.35.3.windows.1)以使用 WinMerge (2.16.20) 作为外部 difftool。这 post was my entry point and this Gist 似乎对某些人有所帮助。我这边还是没有运气。

$ 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:post 中,作者引用了 git 的 2.5 版。但官方回购将 2.36 列为最新版本。 windows 似乎有 2015 年的 2.5 版本。那是实验性的吗?还是非官方?

问题 2:有人可以解释一下 git difftool 在幕后做了什么吗?有没有办法模拟 git 之外的调用,这样我可以更好地调试它?也许有人也有这个问题,可以解释他是如何调试问题的

我没有错误信息(好像被吞了...)

在 gitconfig 中写入 Windows 路径的正确空格、斜杠和反斜杠是一场噩梦。为避免它,将 c:\Program Files (x86)\WinMerge 添加到系统变量 Path (google windows how to edit system variables) 以便我们可以在直接在命令行而不是其绝对路径中的路径。

更新 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.