Git mergetool: Source merging is inevitable with concurrent development. To help with merges, source control products have a merge tool. Some, including Git, allow configuring your favorite merge tool vs forcing use of their own merge tool.

Built-In Merge Tool Configuration

Git supports the easy configuration of many merge tools. The Git help lists them, and as of this writing they are:

  • araxis
  • bc3
  • codecompare
  • deltawalker
  • diffuse
  • ecmerge
  • emerge
  • gvimdiff
  • gvimdiff2
  • kdiff3
  • meld
  • opendiff
  • p4merge
  • tkdiff
  • tortoisemerge
  • vimdiff
  • vimdiff2
  • xxdiff

To configure the git merge tool, use:

git config merge.tool

 Example

One of my favorite merge tools is by Perforce: P4Merge. It’s free to use, and does not require using the Perforce server or a license, so anyone can use it.

As an example, to configure it globally for all Git repos, execute:

git config --global merge.tool p4merge

Other Merge Tools

When specifying a merge.tool value not in the supported list, also specify a mergetool.<tool>.cmd matching variable. The value of this variable is the command to invoke the merge tool (may specify a script for ease).

In the process spawned to run the specified merge command, Git creates BASE, LOCAL, REMOTE, and MERGED environment variables. Use these variables in the launch of the merge tool.

Example

git config --global merge.tool myfavtool
git config --global mergetool.myfavtool.cmd myfavtool_executable $BASE $LOCAL $REMOTE $MERGED

Diff Tool Different from Merge Tool

To configure the diff tool Git uses different from the merge tool, similarly configure with the diff.tool setting:

git config --global diff.tool p4merge

Further Info

Git has additional mergetool config variables.  Consult the Git help for config to see them:

git help config