How to Configure Git Diff and Merge Tools?¶
| tool | git |
Git can use external tools to perform merge and diff:
Use default tool¶
git difftool
git mergetool
Use custom tool¶
git difftool -t tool\_name
git mergetool -t tool\_name
There are tons on diff/merge tools, I’d like highlight git configuration for three of them:
Sample ~/.gitconfig
(Windows)¶
[difftool "kdiff3"]
path = D:/Tools/KDiff3/kdiff3.exe
keepBackup = false
trustExitCode = false
[mergetool "kdiff3"]
path = D:/Tools/KDiff3/kdiff3.exe
keepBackup = false
trustExitCode = false
[difftool "diffmerge"]
cmd = \"C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe\" \"$LOCAL\" \"$REMOTE\"
[mergetool "diffmerge"]
cmd = \"D:/Tools/Git/cmd/git-diffmerge-merge.sh\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = false
[diff]
tool = kdiff3
[merge]
tool = kdiff3
Content of git-diffmerge-merge.sh
¶
$cat D:/Tools/Git/cmd/git-diffmerge-merge.sh
#!/bin/sh
localPath="$2"
basePath="$1"
remotePath="$3"
resultPath="$4"
if [ ! -f $basePath ]
then
basePath="~/diffmerge-empty"
fi
"C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" --merge --result="$resultPath" "$localPath" "$basePath" "$remotePath" --title1="Mine" --title2="Merged: $4" --title3="Theirs"
Sample ~/.gitconfig
(OS X)¶
[diff]
tool = opendiff
[merge]
tool = opendiff
opendiff is bundled with Xcode Tools.
Sample usage:
$ git difftool -t diffmerge HEAD..HEAD~1