我如何告诉 Visual Studio 将 WinMerge 与 Git 一起使用?

How do I tell Visual Studio to use WinMerge with Git?

我在 VS2017 Enterprise 中使用 Git,如果我在“更改”中右键单击一个文件并选择 "Compare with unmodified",它会在 VS 中使用 VS 在新的 window 中打开差异工具。

我想改用 WinMerge,并且一直在寻找 this (instructions for BeyondCompare, but the principle should be the same), this (ditto for GitExtensions) and this 等资源,但无法让它工作。无论我做什么,我仍然在 VS 中获得 VS diff 工具。

我的用户文件夹中的 .gitconfig 文件如下所示...

[user]
  name = Me
  email = myemail@somewhere.jim
[core]
  autocrlf = true
[diff]
  tool = winmerge
[difftool "winmerge"]
  cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE"

...我的项目文件夹中的 .git/config 文件如下所示(敏感信息已更改)...

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[user]
[diff]
    tool = winmerge
[difftool]
    prompt = true
[difftool "winmerge"]
    cmd = "/c/Program\ Files\ \(x86\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE
    keepBackup = false
[merge]
    tool = vsdiffmerge
[mergetool]
    prompt = true
[remote "origin"]
    url = https://me@dev.azure.com/me/Project/_git/Project
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[gui]
    wmstate = normal
    geometry = 1346x938+75+75 445 196

谁能告诉我使用 WinMerge 需要做什么?

你的问题是……

/c/Program\ Files\ \(x86\)/WinMerge/WinMergeU.exe

...是错误的路径。如果您查看第一个代码片段,您会看到正确的路径,但该路径已被项目的配置文件覆盖。

如果您更改第二个片段中的路径,或者(更好的是)删除整个部分,因为它只复制第一个片段中的内容,那么您应该会发现它会起作用。