推送React应用到GitHub仓库报错RPC failed; curl 18该如何解决?
问题成因
- Git默认的HTTP传输缓冲区配置过小,无法承载推送数据体量导致传输过程中连接被提前中断,本次推送体量仅5.76MiB,该原因的触发概率最高
- 本地网络到GitHub的链路不稳定,存在丢包、限速或者代理配置异常的情况,触发curl传输中断
- 本次提交中包含超出GitHub单文件大小限制的资源文件,远程端主动中断了连接
- 本地仓库与远程仓库的提交记录存在未同步的冲突,远程端拒绝推送后主动断开连接
排查步骤
- 执行
git log origin/main..main查看本地是否存在未同步到远程的提交,确认推送内容有效 - 执行
git ls-files | xargs ls -lh | sort -hr检查本次提交的所有文件大小,排查是否有超过100MB的大文件 - 执行
curl -I https://github.com测试本地到GitHub的网络连通性,确认是否存在网络超时、丢包问题 - 执行
git config --global http.proxy检查本地Git代理配置,确认代理服务运行正常、无速率限制
修复方案
方案1:调高Git HTTP传输缓冲区大小
执行以下命令修改全局配置,将缓冲区调整为500MB:
git config --global http.postBuffer 524288000
修改完成后重新执行推送命令git push -u origin main即可。
方案2:切换SSH协议推送
如果HTTP协议持续出现传输问题,可以将本地仓库的远程地址切换为SSH协议:
git remote set-url origin git@github.com:<你的GitHub用户名>/<你的仓库名>.git
切换完成后重新执行推送即可,注意需要提前在GitHub账户中配置本地SSH公钥。
方案3:拆分提交体量
如果本次提交包含大量文件,可以拆分commit分批推送,避免单次推送数据量过大触发中断:
# 先推送部分提交 git push origin <较早的commit哈希>:main # 再推送剩余提交 git push origin main
方案4:排查并移除大文件
如果检查发现存在超出限制的大文件,可以使用git filter-repo工具从提交记录中移除该文件后再推送。
内容的提问来源于stack exchange,提问作者ronak singh
相关产品推荐
相关产品推荐

