FileMerge (opendiff) can really come in handy when you need to visually compare merging conflicts. Other times it's just a nice visual way to review your days work.
The following method works by creating a simple bash script (git-diff-cmd.sh) that sets us up with the proper command line arguments for Git to pass off files to FileMerge.
-
Open the bash script for editing:
vi ~/bin/git-diff-cmd.sh
-
Paste the following code:
#!/bin/sh /usr/bin/opendiff "$2" "$5" -merge "$1"
-
Make the bash script executable:
chmod +x ~/bin/git-diff-cmd.sh
-
Tell Git (globally) to run our bash script when 'git diff' is issued:
git config --global diff.external ~/bin/git-diff-cmd.sh
Now head over to your Git-aware project directory and issue a
git diff /path/to/modified/file.py
and FileMerge will pop up showing you the
differences against it and HEAD.
You can also do things like git diff --cached
to review all the changes
against HEAD.
Problem for me with difftool is that it will ask for merge file when saving.
Problem for me with this script is that opendiff will open new diffs before I had time to save/quit.
If someone knows how to fix sequential diffs where git will wait for the first file to be saved/quit before diffing another file + have merge path set I'd be really greatful.
Update:
I had this behaviour with svn using filemerge and:
http://soft.vub.ac.be/svn-gen/bdefrain/fmscripts/fmdiff
But can't seem to replicate it with git.
Edit:
@mcormier I think you can just put & after the command to put in the background.