当我在 Git Bash 中运行以下命令时:
git difftool mybranch master
git 依次打开 Visual Studio 的几个空实例(未打开文件,未显示差异)。
这是我的全局 .gitconfig
的相关部分,位于我的主目录中:
[diff]
tool = vsdiffmerge
[difftool]
prompt = false
[difftool "vsdiffmerge"]
cmd = '"C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t
keepbackup = false
trustexistcode = true
我从 this link 得到了这个片段,它描述了如何将内置的 Visual Studio diff 工具与 git 结合使用。
我的理论是vsDiffMerge.exe
正在使用错误的参数进行调用。
我已经尝试创建一个包装器 .sh
vsDiffMerge.exe
的脚本:
#!/bin/sh
"C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe" "$2" "$5"
并将其设置为我的 .gitconfig
中的外部工具,像这样:
[diff]
external = (path to my shell wrapper)
但这与我当前的工作有类似的效果,除了它只打开 Visual Studio 的单个实例,并且必须使用 git diff
运行而不是git difftool
.
任何帮助将不胜感激 - 我无法找到有关此问题的很多相关信息。
最佳答案
我不确定之前的配置不起作用的确切原因,但现在这对我有用:
在我的.gitconfig
中:
[diff]
tool = vsDiffMerge
[difftool "vsDiffMerge"]
cmd = "'"C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe"' $LOCAL $REMOTE"
trustExitCode = true
我不再需要 shell 包装脚本,并且我可以成功地查看差异,如下所示:
git difftool mybranch master
关于git - 在 Git Bash 上运行 "git difftool"会打开 Visual Studio 的多个空实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829781/