已开启Git LFS仍无法推送文件到远程仓库,提示pack超允许大小如何解决?
错误原因
日志中明确返回remote: fatal: pack exceeds maximum allowed size,核心问题是本次推送生成的单个Git打包文件大小超过了远程仓库的单包体积限制:
- 你的LFS对象已经全部上传完成,问题出在普通Git对象的打包推送环节
- 大部分代码托管平台的默认单包上限为2GB左右,本次生成的pack包体积达4.78GiB,远超上限导致远端主动断开连接,推送失败。
解决方案
可根据实际情况选择以下任意一种方案操作:
- 方案1:拆分提交分批推送
不要一次性推送全部提交,将本地提交拆分为多个小提交,单个提交涉及的文件总大小控制在1GB以内,分批次执行git push即可。如果已经生成了多个提交,可以指定提交哈希逐段推送:
示例(将main替换为你的实际分支名):
如果使用SSH协议推送,优先选择该方案。# 先推送前半部分提交 git push origin <较早的提交哈希>:main # 所有分段提交推送完成后,再推送最新版本 git push origin main - 方案2:调大Git单次推送缓冲区
如果你使用HTTP/HTTPS协议推送,可以先执行以下命令调整http.postBuffer参数,将单次推送的缓冲区上限调至5GB:
配置完成后重新执行git config --global http.postBuffer 5368709120git push即可。 - 方案3:排查未加入LFS的大文件
部分大文件可能没有被纳入LFS追踪规则,被当成普通Git对象打入pack包导致体积超标,可执行以下命令排查本地仓库大于100MB的文件:
找到遗漏的大文件后,将对应类型的文件加入LFS追踪:git ls-files | xargs ls -l | sort -nrk5 | head -20
之后重写提交历史将对应大文件迁移到LFS,再重新推送即可。git lfs track "*.你的大文件后缀" git add .gitattributes
内容的提问来源于stack exchange,提问作者user14954690
相关产品推荐
相关产品推荐

