xcode - 如何使用 opendiff 和 git diff 而无需安装整个 Xcode 应用程序?
问题描述
升级到 MacOS Mojave 后, mygit
和opendiff
停止工作(myopendiff
通常由 调用git diff
)。
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 应用程序就可以工作吗?
解决方案
这看起来像是一个 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
以进行视觉差异。
推荐阅读
- python - 确切的地球移动距离(不是锦葵距离)Python代码
- python - 如何制作排行榜命令 discord.py?
- react-native-code-push - 我们可以只为特定设备发布 codepush 吗?
- javascript - 删除具有相同状态的重复记录并仅保留最新记录
- css - 我尝试使用横幅背景,但它不能正常工作?我已将此代码放在我的头部
- reactjs - 未找到与该模式匹配的文件:“'**/*.js'”
- python - 给定一个指示段边界的值,为张量生成段标签
- linux - 如何在 Linux 的 Monodevelop 中打开 Unity3d 类的自动完成功能?
- django - CSRF cookie 未在 chrome 中设置 Django 跨站点 iframe
- oracle - Oracle - 如何将日期时间转换为 TZ 格式?