为什么vsdiffmerge总是打开一个新的Visual Studio而不显示差异?

9

我想使用vsdiffmerge作为git的diff工具。我设置了以下.git/config文件。

[diff]
    tool = vsdiffmerge
[difftool]
      prompt = true
[difftool "vsdiffmerge"]
      cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\vsDiffMerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
      keepbackup = false
      trustexistcode = true
[merge]
      tool = vsdiffmerge
[mergetool]
      prompt = true
[mergetool "vsdiffmerge"]
      cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer\\vsDiffMerge.exe\" \"$LOCAL\" \"$REMOTE\" //t //m
      keepbackup = false
      trustexistcode = true

我发现它有时可以很好地工作,但它会打开一个新的VisualStudio并且不显示差异标签。我尝试删除//t但没有帮助。

我想问两个问题:

  1. 如何使vsdiffmerge在打开的VisualStudio中打开差异标签?

  2. 如何一次使用git diff多个文件,而不必输入所有文件到y中。我看到文件数为133,我应该按133 y


你找到这个问题的解决方案了吗? - xargs
@xargs 抱歉,我找不到。 - lindexi
我可以确认在VS 2022中仍存在此问题(我使用TortoiseSVN的vsDiffMerge)。有时它会使用现有的VS实例,有时它会在现有的VS实例中打开差异窗口*,然后启动一个带有相同差异窗口的第二个VS实例。非常恼人。 - Heinzi
1个回答

1

diff工具和merge工具的命令应该略有不同:

请尝试以下命令:

  • Diff工具命令:/t "$LOCAL" "$REMOTE"

  • Merge工具命令:/m /t "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

这里提供了Visual Studio 2019的示例,但Visual Studio 2017应该类似:

difftool.vsdiffmerge.path=C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer/vsDiffMerge.exe
difftool.vsdiffmerge.cmd=/t "$LOCAL" "$REMOTE"
mergetool.vsdiffmerge.path=C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer/vsDiffMerge.exe
mergetool.vsdiffmerge.cmd=/m /t "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

我使用/启动它来自GitExtensions,但从其他Git客户端应用程序中启动应该非常相似。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接