Git fatal:pack 在偏移量 X 处有坏对象:inflate 返回 -5

问题描述 投票:0回答:2

Git 给了我一份可爱的圣诞礼物...我正在尝试

git push
一堆提交,比如 6 GB。 我收到以下错误消息:

-Counting objects: 525, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (474/474), done.
fatal: pack has bad object at offset 3453162391: inflate returned -5
error: pack-objects died of signal 13
error: failed to push some refs to ....git

这是什么意思以及如何解决? 从谷歌我可以看出它与我试图推动的大小有关。

这是在写作时发生的。

git zlib inflate
2个回答
8
投票

根据您的偏移量,看起来您正在尝试推送一些非常大的对象(偏移量 3453162391 =~ >= 3GB),因此 zlib 无法膨胀/压缩对象,因为输出缓冲区中没有足够的空间(错误:

Z_BUF_ERROR
)。

这可能与暂时缺乏内存或某些缓冲区限制有关。基本上它会尝试使用可用的输出来处理尽可能多的输入,否则它会返回

Z_BUF_ERROR
。请参阅:zlib inflate 返回缓冲区错误

您应该重新尝试看看是否可以重现问题。

如果问题重复出现,请尝试:

  • 避免将大文件推送到 git 存储库中,Git 旨在跟踪源代码文件,而不是非常大的文件(例如 6GB),

  • 增加客户端上的 git 消息大小

    http.postBuffer
    ,例如

    git config http.postBuffer 134217728 # =~ 128MB
    
  • 使用一些可以忽略较大斑点的替代客户端,例如

    bfg
    ,例如

    java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
    
  • 删除导致问题的对象(

    git gc
    ?)。

其他潜在问题可能包括:

如需进一步阅读,请查看这篇文章:推送到远程时“pack has bad object”


如果您想使用 Git 处理大文件,请检查以下内容:


0
投票

1.克隆浅拷贝 克隆存储库的浅表副本可以避免损坏的对象。利用 --depth 参数仅克隆最近的提交。

git clone --depth 1 <repository-url>

2.成功克隆浅拷贝后,您可以根据需要获取存储库历史记录的其余部分:

cd <repository-directory>
git fetch --unshallow
© www.soinside.com 2019 - 2024. All rights reserved.