Git推送失败报RPC failed; HTTP 500错误,调postBuffer仍未解决
报错信息
Enumerating objects: 64387, done.
Counting objects: 100% (64387/64387), done.
Delta compression using up to 12 threads
Compressing objects: 100% (49041/49041), done.
error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500
send-pack: unexpected disconnect while reading sideband packet
Writing objects: 100% (64387/64387), 3.06 GiB | 17.57 MiB/s, done.
Total 64387 (delta 13950), reused 64143 (delta 13706), pack-reused 0
fatal: the remote end hung up unexpectedly
Everything up-to-date
解决方法
拆分大提交:本次推送的数据包达3.06GiB,远超常规推送大小,拆分后推送能避免服务器超时:
- 撤销当前提交:
git reset --soft HEAD~1 - 分批次添加并提交文件,例如:
git add src/,再执行git commit -m "src: 提交源码文件" - 推送小提交:
git push,重复此流程直到所有文件推送完成
- 撤销当前提交:
排查远程服务器状态:HTTP 500是服务器内部错误,大概率是远程仓库存储空间不足、服务临时故障或配额超限,联系仓库管理员确认服务器状态
切换SSH协议推送:HTTP协议对大文件推送的兼容性较差,换成SSH协议尝试:
- 查看当前远程地址:
git remote -v - 替换为SSH地址:
git remote set-url origin git@xxx.com:your/repo.git(替换为实际SSH地址) - 重新执行推送:
git push
- 查看当前远程地址:
关闭Git压缩优化:服务器可能无法处理大压缩包,关闭压缩后推送:
执行命令:git config --global core.compression 0,再尝试推送清理本地冗余对象:本地仓库可能存在未清理的大文件残留,清理后再推送:
- 清理悬空对象:
git gc --prune=now --aggressive - 若历史提交中有大文件,使用
git filter-repo移除(注意:此操作会修改提交历史,团队协作需提前沟通)
- 清理悬空对象:
内容的提问来源于stack exchange,提问作者Taksh04

