22

嗨,我正在尝试使用 opendiff 作为 git mergetool,但是当我运行 mergetool 时,我收到以下错误消息:

合并工具 opendiff 不能作为“opendiff”使用

我究竟做错了什么?它以前工作得很好,但是自从我安装了一个新的硬盘驱动器后它就不再工作了:(

4

3 回答 3

30

您需要将 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 并接受许可证可以解决问题

于 2014-09-02T14:18:18.253 回答
16

确保您已安装 XCode。(如果您使用的是 git,那么您可能使用的是 brew,在这种情况下,您可能已经安装了 XCode。)

一次性解决方案是告诉 git 你想使用什么工具:

$ git mergetool -t opendiff

至于将 opendiff 设置为默认工具,您需要在 git 配置文件中设置“merge.tool”变量。

于 2013-03-08T00:39:43.880 回答
2

git 支持 --dir-diff (-d) 执行目录 diff,在 FileMerge 中看起来不错。但是,使用带有 --dir-diff 的 opendiff 存在一些小问题。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

于 2016-04-25T13:08:54.980 回答