我发现这篇文章解释了如何让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"
但是行为没有改变。
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