Git pull报错curl 16 HTTP2 framing layer错误 无法拉取GitLab代码
报错根因
你遇到的curl 16 Error in the HTTP2 framing layer属于Git客户端与服务端的HTTP协议层兼容故障,和你推测的合并冲突残留、仓库大文件、多设备同时操作master分支没有关联。
故障仅在单台设备复现、同账号同仓库在另一台设备可正常pull/push、全新路径克隆也报相同错误的表现,完全排除仓库本身配置问题,故障点在出问题的那台电脑的本地Git配置或网络环境。
修复方案
按优先级依次尝试,每步操作后测试git pull/clone是否恢复正常:
- 强制Git全局使用HTTP/1.1协议通信,绕过HTTP/2的帧解析兼容问题
这是该报错最高效的解决方式,90%以上的同类问题执行该命令后即可恢复:git config --global http.version HTTP/1.1 - 升级本地Git版本
2.35之前的部分Git版本绑定的libcurl库存在已知的HTTP/2帧解析bug,如果你当前Git版本低于2.35,直接升级到最新稳定版即可修复。可通过以下命令查看当前版本:git --version - 排查本地网络拦截规则
本地代理、企业防火墙、网络加速器如果错误拆解HTTP/2数据包,也会触发该报错。临时关闭系统代理、切换到手机热点等其他独立网络测试,如果切换后操作正常,调整代理/防火墙规则放行GitLab域名流量即可。 - 清理本地Git缓存
如果以上操作都无效,执行命令清理本地损坏的临时缓存文件:rm -rf .git/objects/pack/tmp_pack_* git gc --prune=now
排查提示:合并冲突、大文件超限、分支状态异常类问题触发的Git报错,都会带有明确的业务层提示(比如合并冲突会提示
Automatic merge failed; fix conflicts and then commit the result,大文件超限会提示文件大小超过限制),不会出现curl协议层报错,不需要在这类方向浪费排查时间。
内容的提问来源于stack exchange,提问作者Heather B.
相关产品推荐
相关产品推荐

