macOS 12.0.1下Git 2.33.1执行git push无报错卡住问题求助
终止当前进程
首先按Ctrl + C终止卡住的git push进程,该操作不会损坏本地仓库数据,也不会影响远程仓库已接收的对象。
排查步骤
1. 连通性与网络配置校验
- 执行
git remote -v确认远程仓库地址配置无误 - 若使用SSH协议连接远程仓库,执行
ssh -T git@<远程仓库域名,例如github.com>测试SSH连接可用性;若使用HTTPS协议,执行curl -v https://<远程仓库域名>测试连接 - 检查Git代理配置:执行
git config --get http.proxy、git config --get https.proxy,确认代理配置与当前网络环境匹配。若存在无效代理,执行git config --unset http.proxy、git config --unset https.proxy清除配置。
注意:macOS Monterey存在默认SSH QoS配置异常的已知bug,若使用SSH协议,可在~/.ssh/config文件中对应仓库域名的配置块下新增IPQoS=throughput,解决传输完成后连接挂起的问题
2. 本地仓库与版本兼容性校验
- 执行
git fsck检查本地Git对象完整性,确认无损坏对象导致传输阻塞 - 执行以下命令检查是否存在误提交的大文件(即使你仅添加了小体积PNG,也可能意外提交了系统生成的缩略图缓存、隐藏文件):
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
- 你使用的Git 2.33.1为2021年发布的旧版本,和macOS Monterey的文件系统API存在已知兼容问题,可通过
brew install git升级到最新稳定版Git,排除版本兼容故障。
3. 定位阻塞点
执行GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push开启Git调试模式,运行后会输出每一步的执行日志,可直接定位到具体阻塞环节(远程钩子校验、权限校验、网络握手等)。
替代推送方案
如果全量推送持续阻塞,可尝试增量推送:
- 执行
git log --oneline -2查看超前的2个提交哈希 - 先推送第一个提交:
git push origin <更早的提交哈希>:development - 推送完成后再执行
git push推送剩余提交
内容的提问来源于stack exchange,提问作者letter Q
相关产品推荐
相关产品推荐

