macOS上Git配代理仍超时,主因是Git配置、终端环境变量、系统代理三层冲突或不匹配。需依次验证Git代理是否生效、清理干扰的环境变量、关闭系统PAC代理并忽略GitHub域名、确认远程地址协议是否匹配代理类型。
macos 上 git 配置了代理却仍连接超时,问题往往不在“有没有配”,而在“配得对不对”和“有没有被其他层干扰”。核心是分清三层代理:git 自身配置、系统网络设置、终端环境变量——三者可能同时生效、互相冲突。
一、先确认 Git 代理是否真的在起作用
很多超时其实是 Git 没走你设的代理,而是直连失败。用以下命令验证:
- 运行 git config --get http.proxy 和 git config --get https.proxy,看输出是否为你预期的地址(如
http://127.0.0.1:7890或socks5://127.0.0.1:7891) - 如果返回空,说明 Git 当前没读到任何代理配置——你可能只改了系统代理或环境变量,但没设 Git 专属配置
- 如果返回旧地址(比如已关闭的代理端口),就是残留配置在捣鬼,直接清除:
git config --global --unset http.proxygit config --global --unset https.proxy
二、检查终端环境变量是否覆盖或干扰 Git
即使 Git 没配代理,http_proxy 等环境变量也会让 Git 底层的 cURL 强制走代理。尤其在 macOS 上,Shell 配置文件(~/.zshrc、~/.bash_profile)里常有遗留设置:
- 执行 env | grep -i proxy,查看当前会话是否设置了
http_proxy、https_proxy、all_proxy - 如果存在,且指向不可用地址(如
http://localhost:8080),就立即清理:unset http_proxy https_proxy all_proxy - 再检查配置文件:
grep -i proxy ~/.zshrc ~/.bash_profile ~/.profile 2>/dev/null,删掉或注释掉相关 export 行
三、排除系统级代理与 PAC 的静默拦截
macOS 系统代理(尤其是 PAC 脚本)对 Git 是透明的——Git 不识别 PAC,但系统网络栈可能把 Git 流量重定向到错误出口,导致超时或 RST:
- 打开「系统设置 → 网络 → Wi-Fi(或以太网)→ 详细信息 → 代理」
- 确保「自动代理配置(PAC)」未勾选;若曾启用过,即使已关,也建议点击「好」→「应用」后重启终端
- 在「忽略这些主机与域名」中添加:
*.github.com, *.githubusercontent.com, github.com(英文逗号分隔) - 终端执行:
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder刷新 DNS 缓存
四、验证协议匹配:HTTPS vs SSH
Git 代理只对 HTTP/HTTPS 协议生效,对 SSH 完全无效。如果你用的是 git@github.com:user/repo.git 这类 SSH 地址,配了 HTTP 代理也白搭:
- 运行 git remote -v 查看远程地址格式
- 如果是 SSH 地址,两种选择:
• 改为 HTTPS:git remote set-url origin https://github.com/user/repo.git
• 或为 SSH 配代理:编辑~/.ssh/config,加入:Host github.com<br> HostName github.com<br> User git<br> ProxyCommand nc -X 5 -x 127.0.0.1:7891 %h %p
不复杂但容易忽略:Git 超时很少是单一原因,通常是 Git 配置、环境变量、系统代理三者叠加出错。按顺序排查这四步,90% 的“配了还超时”问题都能定位到根因。


















