正在尝试使用 opendiff 作为 git 合并工具,但是当我运行 mergetool 时,我收到以下错误消息:
合并工具 opendiff 不能作为"opendiff"使用
我做错了什么?它以前工作正常,但是由于我安装了新硬盘驱动器,它不再工作了:(
您需要将 opendiff 配置为全局 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
如果您遇到Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo
,请打开 XCode 并接受许可证可以解决问题
确保已安装 XCode。(如果你使用的是git,那么你可能正在使用brew,在这种情况下,你可能已经安装了XCode。
一次性解决方案是告诉 git 你想使用什么工具:
$ git mergetool -t opendiff
至于将 opendiff 设置为默认工具,您需要在 git 配置文件中设置 "merge.tool" 变量。
git 支持 --dir-diff (-d) 来执行目录差异,这在 FileMerge 中看起来不错。 但是,使用 opendiff 和 --dir-diff 存在一些小问题。 Opendiff 没有 --merge 目标预设,git 会过早删除临时文件以保存更改。 我的解决方法是使用一个小的bash脚本来调用FileMerge。 我称之为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
这样称呼它:
git difftool -d -x gdiff