如何在Visual Studio 2013中为Git使用外部diff工具



我发现这篇文章解释了如何让Visual Studio 2013在比较Git中的文件时使用内置的diff工具,但我遇到了相反的问题。现在,当我右键单击Git Commit Details窗口中的一个文件并选择Compare With Previous...时,VS在默认的Visual Studio 2013比较工具中执行diff,但我希望它使用外部diff工具,特别是TortoiseMerge.exe。我在C:\Users\[my Name]\.gitconfig中指定了它,它在GitBash控制台中正常工作,但Visual Studio忽略此设置,并始终使用其内置工具。

这就是我所拥有的。gitconfig:

[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe
[diff]
    guitool = TortoiseMerge
[difftool "TortoiseMerge"]
    path = C:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe

我还检查了本地存储库的.gitconfig,以确保它没有覆盖此设置,并且它没有指定任何diff或difftool设置。

我也在我的.gitconfig中尝试过类似的设置,比如:

[diff]
    guitool = TortoiseMerge
[difftool "TortoiseMerge"]
    cmd = "C:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe" /base:"$REMOTE" /local:"$MINE"

但是行为没有改变。

Visual Studio使用diff.tool配置设置,而不是diff.guitool配置设置。

尝试:

[diff]
    tool = TortoiseMerge

我最近在Visual Studio 2012中遇到了同样的问题。我将在这里发布解决方案,因为这是我在搜索时发现的第一个线程。

我的.gitconfig文件看起来是这样的:

[merge]
    tool = kdiff3
[diff]
    tool = kdiff3
[difftool]
    prompt = true
[difftool "kdiff3"]
    path = "C:/Program Files/KDiff3/kdiff3.exe"
    keepBackup = false
    trustExitCode = true
[mergetool]
    prompt = true
[mergetool "kdiff3"]
    cmd = "C:/Program Files/KDiff3/kdiff3.exe" $BASE $LOCAL $REMOTE -o $MERGED
    keepBackup = false
    trustExitCode = true
[mergetool "vsdiffmerge"]
    cmd = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsdiffmerge.exe" /m $REMOTE $LOCAL $BASE $MERGED
    keepbackup = false
    trustexistcode = true

问题是配置部分之间的换行符。

将文件更改为正确工作:

[merge]
    tool = kdiff3
[diff]
    tool = kdiff3
[difftool]
    prompt = true
[difftool "kdiff3"]
    path = "C:/Program Files/KDiff3/kdiff3.exe"
    keepBackup = false
    trustExitCode = true
[mergetool]
    prompt = true
[mergetool "kdiff3"]
    cmd = "C:/Program Files/KDiff3/kdiff3.exe" $BASE $LOCAL $REMOTE -o $MERGED
    keepBackup = false
    trustExitCode = true
[mergetool "vsdiffmerge"]
    cmd = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsdiffmerge.exe" /m $REMOTE $LOCAL $BASE $MERGED
    keepbackup = false
    trustexistcode = true

最新更新