2026 年再拿 Mac 当主力开发机,其实比前几年省心不少:Apple Silicon 稳定了,默认终端就是 zsh,Homebrew 对 M 系列芯片也支持得很成熟。但这不意味着你开箱就能顺利把 Homebrew 和 Git 配好。我前几天刚帮朋友从零配完一台新 Mac,光 Homebrew 安装就卡了三次,后面换源、Git 配置又折腾了小半天。这篇就把我实际跑通的完整流程写下来,包含每一步的原因、命令、以及装上之后最容易踩的坑,给同样在配环境的你当参考。
1. 2026 年给 Mac 配开发环境,为什么绕不开 Homebrew
1.1 Homebrew 相当于 macOS 的“软件管家”
用过 Ubuntu 的朋友一定熟悉 apt,用过 CentOS 的知道 yum,而 macOS 官方并没有一个统一管理命令行的包管理器。Homebrew 就是社区里事实标准的那一个。它解决的核心问题是:你想装wget、jq、python@3.12、nginx这类工具时,不需要去官网一个个下载 dmg、pkg,也不需要手动配 PATH、管理依赖关系,一条brew install就能搞定。更重要的是,它会把软件装到自己的目录里,卸载的时候基本不残留文件,这对喜欢折腾环境的人来说非常友好。
所以我的建议是,新 Mac 配环境的第一件事,就是把 Homebrew 装好。因为后续安装 Git、Node.js、Python、MySQL 等工具时,你会发现 90% 的情况都会回到brew install这条命令上来。地基打稳了,后面才顺。
1.2 Apple Silicon 和 Intel Mac 的安装路径不一样,先确认再说
这是新手最容易忽略的点。2026 年主流自然是 Apple Silicon(M 系列芯片),但很多老款 Intel Mac 还在服役。Homebrew 在两个平台上的安装路径不同:
| 芯片类型 | Homebrew 默认安装路径 | 验证命令 |
|---|---|---|
| Apple Silicon | /opt/homebrew | uname -m输出arm64 |
| Intel | /usr/local | uname -m输出x86_64 |
后面所有涉及路径的地方,都要先按自己的芯片类型替换,别直接复制粘贴。最简单的方式,是在终端里先跑一下uname -m,确认是arm64还是x86_64,再决定用哪套配置。
1.3 2026 年的新机初始化流程大致是这样
如果只考虑命令行开发环境,我会把整个流程分成四段:安装命令行工具 → 安装 Homebrew → 换源 → 配置 Git。每一步都有明确的验证方式,所以不会出现“好像装了但又不知道成没成功”的焦虑。下面我会按实际操作的顺序,一段一段讲。
2. 装 Homebrew 前,先把这三件事准备好
2.1 安装 Command Line Tools:Homebrew 的编译依赖
Homebrew 装很多软件时,都需要调用系统的编译器工具链。macOS 上这套工具统称 Command Line Tools(CLT),包括clang、make、git等。虽然 Homebrew 安装脚本会在中途提示你装,但提前装好能避免不少麻烦。
打开终端,执行:
xcode-select --install然后会弹出一个图形界面,确认安装即可。这个过程可能要等几分钟。如果系统提示“already installed”,说明你已经装过。验证方法:
xcode-select -p如果输出了类似/Library/Developer/CommandLineTools的路径,说明没问题。
2.2 确认你的默认 shell 是 zsh,以及配置文件该写到哪里
从 macOS Catalina 开始,系统的默认 shell 就是 zsh。你不需要改什么,但要明白一个区别:~/.zshrc和~/.zprofile都会被加载,但时机不同。简单理解,~/.zprofile是在登录 shell 时加载,适合放环境变量和初始化命令;~/.zshrc是每次打开新的交互式终端时加载,适合放别名、函数这类需要实时生效的设置。
Homebrew 官方建议把brew shellenv这行写到~/.zprofile,因为它本质上是环境变量,不需要每次切换目录都重新加载。后面换源的环境变量,我也会统一放到~/.zprofile里。
2.3 关于网络环境:为什么官方安装脚本有时会卡住
很多人卡在 Homebrew 安装,问题往往不在电脑,而是官方源在国内的访问不稳定。Homebrew 本体仓库、Formula 索引、以及预编译好的二进制包都在 GitHub 上,大陆地区访问这些地址经常出现超时或速度极慢。
针对这种情况,现在的标准做法并不是找一个“万能破解安装包”,而是把 Homebrew 的仓库地址和下载地址,替换成国内的镜像源。这个操作本身不复杂,关键在于你要知道换源换的到底是哪几个地址,后面会有专门一节讲清楚。这里只是给你打个预防针:如果安装脚本在下载阶段卡了很久,不要慌,先 Ctrl+C 取消,再用镜像仓库重新跑。
2.4 给 shell 配置文件留个备份
这一步很多教程不提,但我每次配环境前都会做。因为安装脚本或你手滑,有可能会改坏~/.zshrc或~/.zprofile。备份成本极低,恢复成本极高:
cp ~/.zprofile ~/.zprofile.bak 2>/dev/null; cp ~/.zshrc ~/.zshrc.bak 2>/dev/null如果文件不存在,命令会报个错,但也不影响。后续配置出问题,直接mv回来就行。
3. 保姆级安装:从官方脚本到镜像兜底,一次跑通
3.1 理想情况:官方脚本一把过
如果你访问 GitHub 比较顺畅,直接在终端粘贴这条命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"脚本会先检查系统环境,然后开始下载 Homebrew。中间会提示你输入密码,这是为了创建/opt/homebrew目录并设置权限,属于正常现象。整个安装过程大概几分钟到十几分钟,取决于网络速度。
装完后,Apple Silicon 的机器需要执行:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"Intel Mac 则把路径换成/usr/local/bin/brew。这一步的目的,是让终端能直接找到brew命令。不执行的话,你会在输入brew时收到command not found。
3.2 现实情况:安装脚本卡在下载阶段怎么办
我自己遇到的情况,大多是卡在Downloading Command Line Tools或者Cloning into /opt/homebrew这两步。前者说明系统工具链没装齐,回到上面先装 CLT;后者说明仓库下载不顺利,可以 Ctrl+C 中断,然后这样跑:
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git" export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git" export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api" export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"这里的关键是:官方安装脚本支持通过环境变量覆盖仓库地址,我们只是把远程仓库指到了清华镜像。脚本本身还是官方的,不会执行第三方代码,安全性有保障。执行完成后,记得把这三四个export写进~/.zprofile,否则下次新终端打开后它们就失效了,Homebrew 还会默认回源。
如果连raw.githubusercontent.com这个脚本地址都访问不了,可以先把脚本下载到本地再跑:
curl -fsSL -o /tmp/install.sh https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh然后用sh /tmp/install.sh执行本地文件。实在不行,还有一种手动方式:直接从镜像站 clone Homebrew 本体仓库到目标目录。Apple Silicon 执行:
git clone https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git /opt/homebrew这种方式不执行官方安装脚本,所以不会帮你自动设置 PATH,需要自己手动加。如果你对命令行已经比较熟悉,可以用它兜底;新手我不建议,因为后面补环境变量容易漏。
3.3 安装完成后的验证:不只看版本号
执行完安装流程,别急着开心,先验证三件事:
brew --version brew config brew doctorbrew --version看版本,brew config能看当前生效的源配置,brew doctor会检查环境是否健康。如果你看到一堆“Warning”也不用慌,多数是目录权限或旧版本残留的提示,按提示处理即可。举个例子,如果提示/opt/homebrew权限不对,可以用sudo chown -R $(whoami) /opt/homebrew修正。
3.4 安装过程中的其他坑
- 镜像源变量设置后,如果安装脚本继续走 GitHub,检查是否在当前终端生效。
export只对当前终端进程有效,开了新窗口就没了。 - 安装过程中断掉再重跑,通常没问题,但个别时候会残留半成品。实在起不来,就删掉
/opt/homebrew重新来:sudo rm -rf /opt/homebrew,然后重新执行安装脚本。 - 不要把
brew装到需要sudo才能操作的目录,也不要为了省事直接用 root 用户跑安装脚本。Homebrew 的权限模型就是当前用户管理自己的目录,强行用 root 反而会留下一堆权限问题。
4. 换源这件事,本质上是换四个地址
4.1 先搞懂 Homebrew 的存储结构,换源才不会瞎换
很多人看到网上教程说“换源”,就只知道复制几条命令。我建议你花两分钟理解 Homebrew 几个目录和变量的区别,后面遇到问题才能自己排查。
| 名称 | 作用 | 默认地址 |
|---|---|---|
| brew 本体仓库 | Homebrew 程序代码本身,位于$(brew --repo) | GitHub Homebrew/brew |
| homebrew-core | 旧版本的 Formula 索引(新版默认走 API) | GitHub Homebrew/homebrew-core |
| homebrew-cask | 图形化软件的下载清单 | GitHub Homebrew/homebrew-cask |
| Bottles | 预编译好的二进制包,安装时直接下载 | ghcr.io |
| API | 新版 Homebrew 获取 Formula 索引的接口 | ghcr.io 或 GitHub |
2024 年之后,Homebrew 官方已经默认不再把 homebrew-core 仓库完整 clone 到本地,而是通过 JSON API 获取索引。所以很多早期教程里让你cd "$(brew --repo homebrew/core)"然后换源的操作,在新版本里已经不是必须的。你真正需要关心的是:本体仓库、API 域名、Bottle 域名这三个地方。
4.2 把 Homebrew 本体仓库切到国内镜像
本体仓库的切换方式很直接,改 git remote 地址:
cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git如果你更习惯中科大源,把地址换成:
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git两个源我都用过,稳定性上没感觉出明显差异。清华源的更新频率和维护水平都很好,可以作为首选项。
4.3 配置 API 域和 Bottle 域,这才是下载提速的关键
如果你只是为了“能装上 Homebrew”,那换不换 API 和 Bottle 无所谓。但只要之后你brew install任何软件,速度差异会非常明显。因为真正的大体积下载,发生在软件二进制包(Bottle)阶段。
在~/.zprofile里加上这几行:
export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api" export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"保存后执行source ~/.zprofile,然后验证:
brew config | grep -E 'HOMEBREW_(API|BOTTLE)_DOMAIN'看到输出的是清华域名,就算配置成功。之后安装软件,比如brew install wget,下载速度通常能到几 MB/s 甚至更高。中科大的对应地址是https://mirrors.ustc.edu.cn/homebrew-bottles和https://mirrors.ustc.edu.cn/homebrew-bottles/api,用法完全一样。
4.4 为什么我不推荐第三方“一键安装脚本”
国内网上流传很广的 Homebrew 安装脚本,确实能做到一键安装+一键换源,看起来省事。但我个人强烈不推荐在重要机器上用。原因是这类脚本属于第三方维护,你无法在短时间内审查它到底执行了什么代码,包括会不会写入额外配置、会不会加载计划任务、会不会修改 shell 启动文件。配开发环境这件事,安全底线的优先级高于“少敲几条命令”。用官方脚本,配上自己写的两个export,本身就是十分钟的事,没必要牺牲可控性。
4.5 换源后的验证、回退与常见问题
换完源,执行一次完整的流程测试:
brew update --force --quiet brew install wget如果brew update报错,多半是 git remote 没设置成功。可以手动看当前源:
cd "$(brew --repo)" git remote -v如果 URL 还是 GitHub 官方地址,重新执行一遍git remote set-url即可。另外,如果你之前手动 tap 过homebrew/cask,可能也需要检查它的 remote,但新装环境一般不用管。
想回退到官方源,也很简单。先改 git remote 回https://github.com/Homebrew/brew.git,再删除~/.zprofile里写的两个HOMEBREW_*_DOMAINexport。这样就能恢复默认网络路径。恢复不了的话,直接brew config看当前生效变量,往往一眼就能发现问题。
5. Git 环境配置:装新版本,改对五个全局配置
5.1 为什么不直接用系统自带的 Git
macOS 即使只装了 Command Line Tools,也会自带一个 Git,版本通常够用,但不会很新。2026 年这个时候,很多仓库已经在用新特性,而且新版 Git 在 macOS 上跑得更顺。所以我向来都是第一时间用 Homebrew 装新版:
brew install git装完后检查一下which git。正常情况下会输出/opt/homebrew/bin/git,如果你看到/usr/bin/git,说明 PATH 里 Homebrew 的 bin 目录优先级不够,需要确认前面brew shellenv那步有没有正确执行。
5.2 五个必须配置的全局选项及其原因
Git 装好后,我习惯立刻配置下面这五项:
git config --global user.name "你的昵称" git config --global user.email "你的邮箱" git config --global init.defaultBranch main git config --global core.editor "code --wait" git config --global credential.helper osxkeychain解释一下:
user.name和user.email会写进你的每一次 commit,别人能看到,所以尽量用真实名字和工作邮箱。如果用的是 GitHub 隐私邮箱,就填 GitHub 提供的username@users.noreply.github.com。init.defaultBranch main让git init默认创建main分支,避免生成master后又要手动改。core.editor "code --wait"让 Git 在需要你输入 commit message 时自动打开 VSCode,保存并关闭窗口后继续执行。前提是你装了 VSCode 并且配置过code命令行工具。credential.helper osxkeychain让 Git 通过 macOS 钥匙串保存 HTTPS 密码,一次认证,后续免密推送。
5.3 进一步优化:别名、中文显示和换行符
基础配置之外,我还会加这几条,尤其在中文环境下很实用:
git config --global core.quotepath false git config --global color.ui auto git config --global alias.lg "log --oneline --graph --all --decorate -10" git config --global alias.st "status" git config --global alias.co "checkout" git config --global alias.br "branch"core.quotepath false解决 Git 状态里中文文件名变成八进制乱码的问题。color.ui auto让命令输出带颜色,阅读起来舒服很多。alias则是给常用命令设快捷键,git lg一条命令就能看到清晰的提交历史图,体验和裸用git log完全不同。
5.4 配置完成的检查方式
全局配置是否正确,一条命令就能看全:
git config --global --list你会看到类似这样的输出:
user.name=你的昵称 user.email=你的邮箱 init.defaultbranch=main core.editor=code --wait credential.helper=osxkeychain到这里,Git 的基础环境已经可用了。
6. SSH Key 配置与远程仓库连通性验收
6.1 为什么选择 ed25519 密钥
配置 Git 和 GitHub 这种远程仓库通信时,有 HTTPS 和 SSH 两种协议。HTTPS 简单,但频繁推送要反复认证;SSH 配置好之后免密,长期用更舒服。生成密钥时,我推荐 ed25519:
ssh-keygen -t ed25519 -C "你的邮箱@example.com" -f ~/.ssh/id_ed25519-t ed25519指定密钥类型,安全强度高、密钥短、生成快。GitHub 和 Gitee 都支持。如果遇到特别老的服务端不支持 ed25519,才考虑传统的ssh-keygen -t rsa -b 4096。
执行时会让你设置 passphrase。我建议设一个,因为密钥文件本身就等于一把钥匙,丢了后果很严重。不过设置了 passphrase 之后,每次 SSH 连接都要手动输入,所以需要配合后面的 ssh-agent 把它“记住”。
6.2 配置 ssh-agent 和 UseKeychain,告别每次输密码
新版本 macOS 上,建议这样把密钥加入钥匙串:
eval "$(ssh-agent -s)" ssh-add --apple-use-keychain ~/.ssh/id_ed25519如果你的系统提示不认识--apple-use-keychain,就改成:
ssh-add -K ~/.ssh/id_ed25519然后创建或编辑~/.ssh/config,写入:
Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519UseKeychain yes表示把 passphrase 存到 macOS 钥匙串,退出终端再打开也不会反复问你。AddKeysToAgent yes表示连接时自动把密钥加到 agent。这一套配置完,基本可以实现“配一次,用半年”。
6.3 添加公钥到 GitHub,并测试连通性
查看公钥内容:
cat ~/.ssh/id_ed25519.pubmacOS 上也可以直接复制到剪贴板:
pbcopy < ~/.ssh/id_ed25519.pub然后登录 GitHub,进入 Settings → SSH and GPG keys → New SSH key,粘贴保存。Gitee 的操作类似,在个人设置里也有 SSH 公钥管理。
测试命令:
ssh -T git@github.com如果看到:
Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.说明 SSH 链路完全打通。Gitee 的测试命令是ssh -T git@gitee.com,同样会输出一行欢迎信息。这样之后,你可以直接:
git clone git@github.com:yourname/your-repo.git完成免密克隆。
6.4 常见的 SSH 报错排查顺序
我列几个实际遇到过的报错,按照出现频率排:
| 报错现象 | 原因 | 处理方式 |
|---|---|---|
Permission denied (publickey) | 公钥没加到平台,或 SSH 没走对私钥 | 检查 GitHub 后台公钥;检查~/.ssh/config的IdentityFile |
Host key verification failed | 本机 known_hosts 里没有目标主机记录或记录冲突 | 执行ssh-keygen -R github.com后重连 |
git@github.com: Permission denied | 用了 HTTPS 地址却配了 SSH 密钥 | 改用git@github.com:...地址 |
| 连接超时 | 网络访问 GitHub 不稳定 | 保持 SSH 协议,但可以先检查~/.ssh/config是否配置了代理等额外参数 |
实际上我见过最多的,既不是网络问题也不是密钥问题,而是用户把公钥和私钥的概念搞反了。复制粘贴到 GitHub 的必须是.pub结尾的公钥,私钥只能留在本机。
7. 配置完成后的验收清单,以及日常维护该做哪些事
7.1 一条命令检查所有核心配置是否到位
环境配置完,最后我会做一次快速体检:
brew --version && git --version && which git这三条命令的输出,可以确认 Homebrew、Git 本体、以及git命令路径是否都正确。接着:
git config --global --list ssh -T git@github.com到这里,Homebrew 和 Git 的配置就已经全部验证完毕。之后你可以放心地进入其他开发环境的搭建,比如装 Node.js、Python、数据库等,一路都会顺畅很多。
7.2 建议立刻做的三个仓库演示操作
为了确认 Git 工作流没问题,我习惯空跑一遍最基础的流程。随便找个目录执行:
mkdir ~/demo && cd ~/demo git init echo "hello" > README.md git add . git commit -m "chore: init demo"能正常 commit,说明用户信息、默认分支、编辑器配置都没问题。再配合远程仓库git remote add origin git@github.com:...和git push -u origin main,就能验证 SSH 推送链路。
7.3 Homebrew 的日常维护节奏
Homebrew 和 Git 配好后,不是就一劳永逸了。我自己的维护节奏是:
brew update brew upgrade brew cleanup --prune=all brew autoremovebrew update更新索引,brew upgrade升级所有可更新的软件,brew cleanup清理旧版本残留的压缩包,brew autoremove删除不再被依赖的旧包。这四条命令不用每天跑,一两周一次足够了。如果你发现brew install时更新很慢,可以用HOMEBREW_NO_AUTO_UPDATE=1环境变量跳过自动更新,但代价是你需要记得手动brew update,否则可能装到较旧版本。
7.4 关于“换源”这个动作的个人体会
写到最后,想聊聊心态问题。很多人对“换源”有顾虑,觉得是不是绕过了什么官方机制,会不会不安全。我实际用了这几年下来的体会是:换源本身是镜像站提供的标准服务,清华、中科大这类知名高校镜像站运维规范、同步频率高,只要你用的是官方安装脚本,只是把仓库地址和下载地址从 GitHub 换成镜像,并没有改变软件本身的来源。真正需要警惕的,反而是那些把“一键安装”和“换源”捆绑在一起的第三方脚本,代码不可审计,风险不可控。
另外提醒一句,环境配置这件事,最好一台新机只认真做一次,然后把用到的命令整理成自己的初始化笔记。下次再换电脑或者重装系统,照着笔记跑一遍,十分钟就能回到熟悉的开发状态,比每次去网上翻教程、到处踩坑强得多。