首页 > 解决方案 > 如何使用 opendiff 和 git diff 而无需安装整个 Xcode 应用程序?

问题描述

升级到 MacOS Mojave 后, mygitopendiff停止工作(myopendiff通常由 调用git diff)。

通过使用以下两行,能够开始git工作:

xcode-select --install
sudo xcode-select -switch /Library/Developer/CommandLineTools

opendiff仍然git diff无法正常工作。似乎一种解决方案是安装 Xcode 应用程序,该应用程序很大(据说在硬盘驱动器上占用 10GB)。我检查了 Spotlight 并键入了 FileMerge,并且能够找到它,它应该与 相同opendiff,并且能够用于ps ax查找路径/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge。但是后来,使用git diff,我实际上使用了一个 bash 脚本来调用

#!/bin/sh 
/usr/bin/opendiff "$2" "$5" -merge "$1" | cat

(请参阅这篇关于如何设置的 github 文章git-diff-cmd.sh

所以我将第二行更改为:

/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge "$2" "$5" -merge "$1" | cat

但它不起作用。所以FileMerge存在,看起来opendiff就是FileMerge。git diff不需要安装整个 Xcode 应用程序就可以工作吗?

标签: xcodegitgit-difffilemergeopendiff

解决方案


这看起来像是一个 hack,实际上它似乎正在使用现有的 XCode 安装:

我做了

cd /Applications/Xcode.app
find . -iname '*opendiff*'

并且能够找到

./Contents/Developer/usr/bin/opendiff
./Contents/Developer/usr/libexec/git-core/mergetools/opendiff

第一个文件是一个二进制文件,第二个实际上是一个脚本,所以我把我的 bash 脚本改成git-diff-cmd.sh如下:

#!/bin/sh 
/Applications/Xcode.app/Contents/Developer/usr/bin/opendiff "$2" "$5" -merge "$1" | cat

并且git diff可以成功调用opendiff以进行视觉差异。


推荐阅读