GitHub推送报RPC failed; curl 92及pack超最大允许尺寸错误如何解决
Git推送报错问题分析与解决
一、报错原因
两个报错本质均为提交内容体积超出GitHub限制导致:
- 首次出现的RPC断开错误,是因为你提交的内容包含12GB数据集,单次推送数据包体积过大,导致HTTP/2连接超时被主动断开,你调整的100MB postBuffer远小于实际推送体积,无法解决问题。
- 后续出现的
pack exceeds maximum allowed size报错,是GitHub的硬限制触发:GitHub对单次推送的整包(pack)最大允许体积约为2GB,单文件最大允许体积为100MB,12GB的数据集打包后远超限制,直接被远端拒绝。
二、解决步骤
步骤1:回滚包含大文件的错误提交
先撤销你刚提交的包含12GB数据集的commit,保留工作区所有内容:
git reset --mixed HEAD~1
执行后暂存区的提交内容会被清空,工作区的修改、新增的数据集文件夹都会保留。
步骤2:处理大体积数据集
Git本身不适合存储超大体积的数据集类文件,推荐两种处理方案二选一:
- 方案A:使用Git LFS存储大文件(推荐,可将大文件纳入Git版本管理)
- 安装Git LFS后执行初始化命令:
git lfs install - 跟踪你的数据集文件夹,假设文件夹名为
dataset,执行:git lfs track "dataset/**" - 将生成的LFS规则文件加入暂存:
git add .gitattributes
- 安装Git LFS后执行初始化命令:
- 方案B:不提交数据集到Git仓库
把数据集文件夹路径加入.gitignore文件,数据集单独使用云盘、对象存储等其他方式存储,不纳入Git版本管理。
步骤3:调整Git推送配置
修改两个配置避免连接、包大小限制问题:
# 将postBuffer调整为2GB,匹配GitHub单包最大限制 git config --global http.postBuffer 2097152000 # 切换为HTTP/1.1协议,避免HTTP/2连接不稳定断开问题 git config --global http.version HTTP/1.1
步骤4:拆分提交重新推送
不要一次性提交所有内容,拆成多个小提交推送:
- 先提交你修改的旧文件:
git add [你修改的旧文件路径] git commit -m "update: 调整旧文件内容" git push
- 若选择使用Git LFS存储数据集,分批提交数据集内容,每次提交的内容总大小控制在2GB以内,每提交一次推送一次:
# 示例:先提交数据集的前半部分 git add dataset/part1/* git commit -m "feat: 添加数据集第一部分" git push # 再提交后续部分,重复操作直到所有数据集提交完成
所有操作完成后即可成功推送所有需要提交的内容。
内容的提问来源于stack exchange,提问作者timdika
相关产品推荐
相关产品推荐

