How to use opendiff as default mergetool
Solution 1
You'll need to configure opendiff as your global merge.tool:
# locate xcode utilities
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
# set "opendiff" as the default mergetool globally
git config --global merge.tool opendiff
If you get Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo
, opening XCode and accepting the license fixes the issue
Solution 2
Make sure you have XCode installed. (If you are using git then you probably using brew, in that case you probably already have XCode installed.)
A one-off solution is to tell git what tool you want to use:
$ git mergetool -t opendiff
As far as setting up opendiff as your default tool, you need to set the "merge.tool" variable in your git config file.
Solution 3
git supports --dir-diff (-d) to perform a directory diff, which looks good in FileMerge. However, there are a couple of minor problems using opendiff with --dir-diff. opendiff doesn't have a --merge target preset, and git will drop the temp files too soon to save changes. My work-around is to use a little bash script to invoke FileMerge. I called it gdiff
.
#!/bin/bash
# find top level of git project
dir=$PWD
until [ -e "$dir/.git" ]; do
if [ "$dir" == "/" ]; then
echo "Not a git repository" >&2
exit 1;
fi
dir=`dirname "$dir"`
done
# open fresh FileMerge and wait for termination
open -a FileMerge -n -W --args -left "$1" -right "$2" -merge "$dir"
https://gist.github.com/miner/e73fc98a83a8fe05d9ef000d46d68a9f
Call it like this:
git difftool -d -x gdiff
Related videos on Youtube
CorpusCallosum
Updated on April 26, 2020Comments
-
CorpusCallosum about 4 years
Hi I am trying to use opendiff as the git mergetool, but when I run mergetool I get this error message:
The merge tool opendiff is not available as 'opendiff'
What am I doing wrong? It was working fine before, but since I installed a new harddrive it's not working anymore :(
-
CorpusCallosum over 11 yearsThis is on OSX Snow Leopard.
-
Ram over 11 yearsclean opendiff and re-install again ? I hope you already tried it
-
-
Tommy over 8 yearsI guess when
git
isn't already being found, but it's difficult to understand how you might end up in that situation. -
nonopolarity almost 5 yearsI could run
opendiff
before, but two days ago I installedrvm
and installed the latest Ruby 2.6.3... and thenopendiff
stopped working, reporting "xcode-select: error: tool 'opendiff' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance". Your first line ofxcode-select
fixed the issue... but it just feel so cryptic what was happening -
StackedCrooked about 4 yearsWow, this actually works as it should! (opendiff never worked as expected because it returns before finishing, and piping to cat only blocks it command until you press "Save" and not until the program quits)