Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save MarkusObrist/1010253 to your computer and use it in GitHub Desktop.
Save MarkusObrist/1010253 to your computer and use it in GitHub Desktop.
shell script that configures git to use WinMerge as the default tool to handle conflicts
#!/bin/sh
#
# This script will make WinMerge your default tool for diff and merge.
# It must run inside git bash (on Windows)
#
# If your WinMerge is in other place then this one, please edit
WINMERGE_SCRIPT="winmerge-merge.sh"
#
# Global setup
#
git config --global mergetool.prompt false
git config --global mergetool.keepBackup false
git config --global mergetool.keepTemporaries false
#
# Adding winmerge as a mergetool
#
git config --global merge.tool winmerge
git config --global mergetool.winmerge.name WinMerge
git config --global mergetool.winmerge.trustExitCode true
git config --global mergetool.winmerge.cmd "$WINMERGE_SCRIPT \$LOCAL \$REMOTE \$BASE \$MERGED"
#
# Adding winmerge as a difftool
#
git config --global diff.tool winmerge
git config --global difftool.winmerge.name WinMerge
git config --global difftool.winmerge.trustExitCode true
git config --global difftool.winmerge.cmd "$WINMERGE_SCRIPT \$LOCAL \$REMOTE"
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2 $3 $4
"C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Local" -dr "Remote" "$1" "$2" "$3" "$4"
Copy link

ghost commented Apr 15, 2014

How do you then call winmerge using git and your difftool command on one file or between two commits is what I am missing?
I tried

git difftool my_file.txt

and

git difftool

without success. Nothing happened! Would you help a newcomer to git? Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment