git推送失败若由代理配置冲突导致,应先unset环境变量并禁用git全局代理验证;再检查~/.zshrc等文件注释或修正http_proxy/no_proxy;必要时为github.com等域名单独配置proxy=""。
macos 上 git 推送失败,如果明确由网络变量配置冲突引起(比如 http.proxy、https.proxy、no_proxy 等环境变量与 git 的实际网络路径不匹配),问题本质是 git 请求被错误代理拦截或绕过,导致连接超时、证书错误、407 认证失败,甚至静默拒绝。解决关键不是重试,而是精准定位并清理冲突的代理设置。
检查当前生效的网络代理变量
终端中运行以下命令,查看是否设置了可能干扰 Git 的变量:
echo $http_proxy $HTTP_PROXY $https_proxy $HTTPS_PROXYecho $no_proxy $NO_PROXY-
git config --global http.proxy和git config --system http.proxy
若输出非空(尤其含 127.0.0.1:8080、localhost:1080 或公司代理地址),且你当前并不需要代理(如直连 GitHub/Gitee),这些就是冲突源。
临时清除代理验证是否修复
在当前终端会话中执行:
unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXYgit config --global --unset http.proxy- 再运行
git push origin main测试
若推送成功,说明确实是代理变量干扰。注意:此操作只影响当前终端,不修改系统或 shell 配置文件。
永久修复配置文件中的冲突项
常见冲突位置包括:~/.zshrc(macOS Catalina 及之后默认)、~/.bash_profile 或 /etc/zshrc。用编辑器打开对应文件,查找类似以下行:
export http_proxy=http://127.0.0.1:8080export NO_PROXY="localhost,127.0.0.1,.github.com"
根据实际网络环境决定处理方式:
- 如果你**完全不需要代理**:直接删除或注释掉整行(加
#) - 如果你**仅对内网使用代理**:确保
NO_PROXY包含远程仓库域名,例如github.com,gitee.com,gitlab.com(注意不带https://,用逗号分隔,可加点前缀如.github.com) - 避免混用大小写变量(如同时设
http_proxy和HTTP_PROXY),Git 优先读小写,冲突易被忽略
改完后运行 source ~/.zshrc 重新加载,并重启终端验证。
绕过代理推送特定仓库(按需)
若必须保留全局代理(如公司网络强制要求),但希望 GitHub/Gitee 走直连,可为特定远程 URL 单独禁用代理:
git config --global url."https://github.com/".insteadOf "https://github.com/"-
git config --global url."https://".proxy ""(清空所有 https URL 的代理) - 或更精准:
git config --global url."https://github.com/".proxy ""
该配置会覆盖环境变量,让 Git 对 github.com 的请求跳过代理,其他域名仍走原代理。











