执行git push报错RPC failed,代码无法正常推送如何解决?
Git push RPC failed报错解决方案
报错说明
你遇到的报错内容如下:
Enumerating objects: 2486, done. Counting objects: 100% (2486/2486), done. Delta compression using up to 4 threads Compressing objects: 100% (2154/2154), done. error: RPC failed; curl 55 SSL_write() returned SYSCALL, errno = 32 fatal: the remote end hung up unexpectedly Writing objects: 100% (2407/2407), 138.79 MiB | 4.73 MiB/s, done. Total 2407 (delta 511), reused 0 (delta 0) fatal: the remote end hung up unexpectedly Everything up-to-date
原因
这个报错本质是单次推送的数据包大小超过Git默认HTTP传输缓存阈值,或者网络波动导致SSL连接中断,1.3GB的大仓库单次提交压缩包超过100MB时非常容易触发该问题。
解决方法
1. 调整HTTP传输缓存大小
执行以下命令将Git全局HTTP缓存上调到500MB,足够覆盖本次138MiB的传输需求:
git config --global http.postBuffer 524288000
如果后续有更大的提交需求,可以将数值调整为1073741824,把缓存上限提升到1GB。
2. 拆分提交分批推送
如果调整缓存后仍然报错,说明当前网络无法支撑单次传输过大的包,拆分提交逐个推送即可:
- 先查询当前分支和远程分支的分叉提交哈希
- 按提交时间从早到晚逐个推送:
git push origin [提交哈希]:[对应分支名]
3. 清理仓库冗余体积
仓库总大小超过1GB后会频繁触发各类推送异常,建议定期清理冗余内容:
- 把日志、压缩包、依赖包等非必要大文件加入
.gitignore,避免被提交到仓库 - 用
git filter-repo工具清理历史提交中的大文件,缩减仓库整体大小
4. 切换SSH协议传输
HTTP协议对大文件传输的兼容性较差,切换为SSH协议可以大幅降低此类问题出现的概率:
- 查看当前远程仓库地址:
git remote -v - 将远程地址修改为SSH格式:
git remote set-url origin [你的仓库SSH地址]
内容的提问来源于stack exchange,提问作者Deepak Dev
相关产品推荐
相关产品推荐

