返回博客列表
开发

升级 macOS 27 后,Git 在 GUI 应用里“消失”了

一个躲了十年的 Intel 版 /usr/local/bin/git 软链接,让所有使用 git 的 App 都报错了。

2026/8/8
5 分钟阅读
分享:
升级 macOS 27 后,Git 在 GUI 应用里“消失”了

昨天升级 macOS 27 Golden Gate 之后,我被 Claude Code 和 VSCode 同时上了一课。

前者一直报 Git is required for local sessions,后者的源代码管理面板直接说 git 没装;可我在终端里跑 git status,一切正常。

这就很怪。最后排下来,问题不是 Git 真没装,而是系统里藏着一个“幽灵 git”。

先说结论

macOS 27 取消了 Rosetta 2,不再运行 Intel(x86_64)二进制。

如果你的 PATH 里有一个很早以前用 Homebrew 装的老 git,GUI 应用先找到它、试着执行、执行失败,就会误报“Git 不存在”。即使后面还有一个好好的系统 git,也救不回来。

终端里没事,是因为 .zshrc 里 Homebrew 的新路径把老路径覆盖了;GUI 应用不一定走这套,所以表现完全不同。

先说结论:删掉那个旧的 /usr/local/bin/git,问题通常就没了。

怎么确认

先把 PATH 里所有叫 git 的东西列出来:

echo $PATH | tr ':' '\n' | while read dir; do
  [ -e "$dir/git" ] && echo "$dir/git" && ls -la "$dir/git"
done

如果你看到类似这种输出,基本就对了:

/usr/local/bin/git
lrwxr-xr-x  1 you  admin  14 Jun 28  2017 /usr/local/bin/git -> ../git/bin/git

重点看时间:2017 年。这通常就是 Intel 时代留下的软链接。

再直接跑一下它:

/usr/local/bin/git --version

如果报 zsh: bad CPU type in executable,那就是它。

为什么终端没事

因为终端和 GUI 应用拿到的环境变量不一样。

  • 终端会读 shell 配置,把 /opt/homebrew/bin 之类的新路径放前面
  • GUI 应用更容易吃到系统级 PATH
  • 所以终端里好好的,图形界面里却像“没装 git”

这类问题最烦人的地方就在这里:不是命令没装,是命令先被一个坏掉的老版本抢跑了。

修复

直接删掉这个软链接:

rm /usr/local/bin/git

删完后,/usr/bin/git 这个 Apple 自带的系统 git 还在,GUI 应用一般就会恢复正常。

如果你还想继续用 Homebrew 版 git,再重新装一个 ARM 版就行。

顺手清理一下别的 Intel 遗留物

遇到这个问题,说明系统里可能还有别的 Intel 老工具。

可以顺手扫一遍:

echo $PATH | tr ':' '\n' | while read dir; do
  for f in "$dir"/*; do
    [ -f "$f" ] && [ -x "$f" ] && \
    file "$f" 2>/dev/null | grep -q "x86_64" && \
    echo "Intel: $f"
  done
done 2>/dev/null

我自己还翻出一个 thefuck 也是 Intel 版,每次开终端都先报一行 bad CPU typebrew reinstall thefuck 之后就老实了。

如果不是 git,也是别的工具

排查逻辑是一样的:

  • 先看 PATH 里有没有同名老工具
  • 再看是不是 Intel 二进制
  • 最后把它删掉或换成 ARM 版

GUI 应用说“没装”,不一定是真的没装。很多时候,只是你被一个幽灵旧版本挡路了。

#macOS#Git#Homebrew#Claude Code#VSCode#系统排查