可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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 :(
回答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
回答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.
回答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