Using Visual Studio 2012's built-in merge tool with Git Using Visual Studio 2012's built-in merge tool with Git git git

Using Visual Studio 2012's built-in merge tool with Git


This article explains how to do this. I tried this out and it works. In my usage, the diff was opened in any existing instance of Visual Studio, which is what you preferred.

[diff]    tool = vsdiffmerge[difftool]      prompt = false[difftool "vsdiffmerge"]      cmd = '"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t      keepbackup = false      trustexitcode = true[merge]      tool = vsdiffmerge[mergetool]      prompt = false[mergetool "vsdiffmerge"]      cmd = '"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/vsdiffmerge.exe"' "$REMOTE" "$LOCAL" "$BASE" "$MERGED" //m      keepbackup = false      trustexitcode = true

Or use %VSINSTALLDIR% to always reference the version of Visual Studio that matches the commandline you have opened (this only works when the Visual Studio environment has been setup, either by using the Visual Studio Command Prompt shortcut or manually calling vsvars32.bat):

[diff]    tool = vsdiffmerge[difftool]      prompt = false[difftool "vsdiffmerge"]      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" //t      keepbackup = false      trustexitcode = true[merge]      tool = vsdiffmerge[mergetool]      prompt = false[mergetool "vsdiffmerge"]      cmd = '"%VSINSTALLDIR%Common7/IDE/vsdiffmerge.exe"' "$LOCAL" "$REMOTE" "$BASE" "$MERGED" //m      keepbackup = false      trustexitcode = true


If you are using Git Source Control Provider with Visual Studio, it looks like this feature was implemented and is available as of version 1.0.0.

Or if you start using Microsoft's tools for git, that will also use the built-in diff tool. From some of the screenshots, it looks like it'll 2-way merge, with the result at the bottom.


Te solution marked as answered did not work for me, but this did (I had the vsdiffmerge.exe location in my path - don't know if it had anything to with it):

[diff]    tool = vsdiffmerge    guitool = vsdiffmerge[difftool]    prompt = true[difftool "vsdiffmerge"]    cmd = $LOCAL $REMOTE /t    keepbackup = false    trustexistcode = true    path = C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe[merge]    tool = vsdiffmerge[mergetool]    prompt = false[mergetool "vsdiffmerge"]    cmd = $REMOTE $LOCAL $BASE $MERGED /m    keepbackup = false    trustexitcode = true    path = C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/vsDiffMerge.exe