Git克隆/推送报错:RPC failed; curl 16 HTTP2帧层错误怎么解决?
解决Git RPC失败及EOF相关错误的方案
遇到的错误信息
error: RPC failed; curl 16 Error in the HTTP2 framing layerB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
已尝试但无效的操作
- 调整HTTP缓冲区和低速设置:
git config --global http.postBuffer 1048576000 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 - 开启Git调试追踪:
set GIT_TRACE_PACKET=1 set GIT_TRACE=1 set GIT_CURL_VERBOSE=1 - 强制使用HTTP/1.1:
git config --global http.version HTTP/1.1
注:无法使用浅克隆或关闭压缩的方案,因为需要完整克隆项目;未使用代理、浏览器扩展、防火墙或杀毒软件,网络连接稳定。
可尝试的其他解决方案
1. 更换Git传输协议
如果当前使用HTTPS协议,尝试切换为SSH协议(前提是已在Git服务器配置SSH密钥):
- 查看当前远程地址:
git remote -v - 修改为SSH地址(以GitHub为例):
git remote set-url origin git@github.com:<用户名>/<仓库名>.git
若原本用SSH协议,可切换回HTTPS协议重试。
2. 清理Git本地缓存与重置配置
重置可能冲突的全局配置,清理本地缓存后重试:
# 重置HTTP相关全局配置 git config --global --unset http.postBuffer git config --global --unset http.lowSpeedLimit git config --global --unset http.lowSpeedTime git config --global --unset http.version # 清理本地Git缓存 git gc --prune=now git fsck --full
3. 调整Git打包参数
针对大仓库,手动调整打包窗口和大小限制:
git config --global pack.windowMemory 100m git config --global pack.packSizeLimit 100m git config --global pack.threads 1
4. 检查Git服务器状态
若上述方法无效,可能是服务器端临时故障,比如负载过高、存储节点异常。可查看对应Git平台的状态公告,或联系仓库管理员确认服务情况。
5. 用部分克隆补全完整历史
虽不能用--depth=1,但可通过--filter参数先克隆核心文件,再补全所有历史:
# 先克隆仅包含最新提交的文件,不下载历史对象 git clone --filter=blob:none <仓库URL> cd <仓库目录> # 补全所有历史数据 git fetch --unshallow
内容的提问来源于stack exchange,提问作者Death-is-the-real-truth
相关产品推荐
相关产品推荐

