简介信息
1. 问题背景#
随着苹果iPhone 14的发布,Xcode也推送了更新。
更新以后,和同事一样都遇到了相同的bug——git用不了:使用git命令会报下面这个错误:
1 | $ git |
尽管按照苹果的这个提示,下载、安装完了,但也依然不好使。
尝试了其它几种方法安装git,好多方法是依赖brew的,而brew本身,又是依赖git的。
2. 解决方法#
有两种方法可以解决这个问题:
- 打开Xcode,会让你选择安装哪个组件、然后还会再安装一次依赖;
- 把git切换到CommandLineTools:
具体就是这个命令:$ sudo xcode-select --switch /Library/Developer/CommandLineTools
3. 2/3个一样的git#
CommandLineTools的git位于这个位置:/Library/Developer/CommandLineTools/usr/bin/git
Xcode的git位于这个位置:/Applications/Xcode.app/Contents/Developer/usr/bin/git
而具体执行的git命令,位于这个位置:/usr/bin/git
三个文件都是可执行文件,但略有差异:
1 | $ ls -l /Applications/Xcode.app/Contents/Developer/usr/bin/git /Library/Developer/CommandLineTools/usr/bin/git /usr/bin/git |
可以看出:
- /usr/bin/git下的文件是一个单独的副本,不是软链接,但体积明显小于其它两个;
- 从md5值可以看出,CommandLineTools下面的和Xcode下面的是同一个文件的两个副本;
- 而/usr/bin/git这个文件,经过实验,在使用
xcode-select --switch xxx
切换时,其md5值是固定的,也就是切换的时候不会引起/usr/bin/git文件的变化。
推测:感觉/usr/bin/git
这个文件是通过类库的方式调用的其它依赖代码,而依赖代码影响到了Xcode的运行。