git - 在 Git Bash 上运行 "git difftool"会打开 Visual Studio 的多个空实例

标签 git visual-studio visual-studio-2013 git-bash git-diff

当我在 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/

相关文章:

c++ - 如何最好地将 GCC 与 Visual Studio 结合使用

c - 使用 blob 文件初始化 C 数组

GitLab.com 下载计数器

c++ - 为什么 `inf`代表浮点溢出?

git - Google 容器构建器,为新分支创建新命名空间

node.js - 无法将 Node 项目发布到 Azure - 文件名必须少于 260 个字符

visual-studio - 如何在 Visual Studio 中将项目设置为最近的 View ?

c# - 来自 DLL 的 Microsoft Visual Studio 2013 摘要

git - 我应该如何构建我的 Git 存储库中的文件/目录?

android - git 真的需要区分大小写的文件系统吗?