向GitHub推送Android项目报RPC failed; curl 18错误,常规方案无效如何解决?
报错信息
error: RPC failed; curl 18 transfer closed with outstanding read data remaining send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly
解决方案
你已尝试的调整http.postBuffer、切换SSH协议未解决问题时,可按以下步骤进一步排查:
- 关闭git低速传输自动中断规则,执行以下命令:
git config --global http.lowSpeedLimit 0git config --global http.lowSpeedTime 999999
网络波动导致传输速度低于git内置阈值时,会主动断开连接,上述配置可禁用该中断逻辑,适配不稳定的网络环境。 - 压缩仓库冗余对象,减小传输体积:
执行前先确认项目根目录的.gitignore文件已正确配置,过滤了build/、.gradle/、local.properties、.idea/等无需提交的本地构建产物和配置文件,避免无效数据被提交。之后执行压缩命令:git gc --prune=now --aggressive
该命令会清理git仓库中的冗余提交对象、压缩文件存储体积,大幅降低需要传输的数据量。 - 拆分提交分批推送
如果项目提交历史长、单次推送数据量过大,可以分批次推送提交,避免单次传输超限:git push <远程仓库别名> <本地分支名>~10:main
上述命令为推送本地分支最近的10条提交到远程main分支,可逐步调整数值推送完所有历史提交。 - 调整SSH保活配置(如使用SSH协议)
在用户根目录的.ssh/config文件中新增以下配置,无该文件可直接新建:
Host github.com ServerAliveInterval 60 ServerAliveCountMax 120
该配置会每60秒向GitHub发送一次保活数据包,最多发送120次,避免SSH连接因长时间无数据交互被服务器或运营商主动切断。
- 切换网络环境重试
部分运营商网络、公司内网、不稳定的代理/VPN会对大体积长连接传输做限制,可尝试切换手机热点等其他网络后再次推送。
内容的提问来源于stack exchange,提问作者Felix Kariuki
相关产品推荐
相关产品推荐

