Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

So, I don't know if anyone's noticed but the new Merge Tool packaged with VS2012 is sick-o to the max. I've recently moved to Git for my source control and really want to be able to set up VS2012 as my default difftool/mergetool.

Any suggestions as to how to do this? I'd rather the diff/merge is started in the active VS2012 window and not a new instance if possible.

like image 487
Adam Drewery Avatar asked Oct 01 '12 08:10

Adam Drewery


People also ask

What's the best visual merge tool for Git?

The Perforce Visual Client (P4V) is a free tool that provides one of the most explicit interface for merging (see some screenshots). Works on all major platforms.

How do I merge in Visual Studio 2019?

To merge commits in Visual Studio, use the Ctrl key to select multiple commits that you want to merge. Then right-click and select Squash Commits. Visual Studio automatically combines your commit messages, but sometimes it's better to provide an updated message.


2 Answers

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 
like image 110
FarFigNewton Avatar answered Oct 09 '22 11:10

FarFigNewton


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.

like image 22
Roman Avatar answered Oct 09 '22 12:10

Roman