An overview of the different external git diff and merge tools, and how to configure them.
Occording to the GIT book, GIT supports these external Diff / Merge tools:
| GIT tool name | Name (and link to website) | License |
|---|---|---|
| [araxis] | Araxis Merge | Commercial |
| [bc3] | Beyond Compare 3 | Commercial |
| [diffuse] | Diffuse | Open source |
| [ecmerge] | ECMerge | Commercial |
| [emerge] | Emerge (Emacs) | Open source |
| [gvimdiff] | gvimdiff | Open source |
| [kdiff3] | KDiff3 | Open source |
| [meld] | Meld merge | Open source |
| [opendiff] | opendiff | (OS X Developer Tools) |
| [p4merge] | P4Merge | Commercial |
| [tkdiff] | TkDiff | Open source |
| [tortoisemerge] | TortoiseMerge | Open source |
| [vimdiff] | vimdiff | Open source |
| [xxdiff] | xxdiff | Open source |
| [kompare] | Kompare | Open source |
Remarks:
- TortoiseMerge: only merge tool
- Kompare: only diff tool
You can choose your prefered diff / merge tool by executing this command (Windows or Linux), in this case for my favorite kdiff3.
git config --global diff.tool kdiff3
git config --global merge.tool kdiff3
The external diff is started using this command:
git difftool
You will probably get the error The diff tool kdiff3 is not available as 'kdiff3'. External diff died, stopping at <filename>.,
because GIT doesn’t find your tool. This can be resolved by adding your tool to the environment PATH variable, or by telling
GIT where to find your tool(s):
git config --global difftool.kdiff3.path "C:/Program Files (x86)/KDiff3/kdiff3.exe"
git config --global mergetool.kdiff3.path "C:/Program Files (x86)/KDiff3/kdiff3.exe"
Any configuration can be undone by executing:
git config --global <config item> --unset
e.g.
git config --global mergetool.kdiff3.path --unset