GIT拉出错误-远程对象已损坏
$ git pull
remote: fatal: object 21f3981dd35fccd28febabd96f27241eea856c50 is corrupted
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header
有什么想法为什么会失败吗?
当我运行git --bare fsck-objects --full
时,我只看到悬挂的链接,但没有断开的链接。 同样git gc
也无济于事。 当我重新克隆或从另一个克隆中拉出时,看不到此错误。
正如朱利安所说,请参阅[https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header]
这确实可能是内存问题,并且要确保我们在这里不会丢失解决方案,它是:
git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
添加git config --global pack.window "0"
为我工作...以及以下
git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
git config --global pack.threads "1"
原因:
Git克隆在克隆存储库时压缩数据
在接收数据/文件之前,它将压缩服务器内存上的数据。
如果服务器内存不足,则打包对象时会出现上述错误
您可以通过使git克隆存储库而不用以下方法将对象打包在服务器上来解决此问题。
git config --global pack.window "0"
答案似乎在注释中:git fsck
刚遇到此错误,花了半天时间完成帖子中描述的所有事情:fsck,repack,gc,配置内存选项。
此帖子也紧随其后:[http://git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id=HEAD]
但是最后,这就像在裸存储库中找到损坏的对象(在这种情况下为21f3981dd35fccd28febabd96f27241eea856c50)并将其替换为未损坏的版本(可以在任何拉出的本地存储库的.git文件夹中找到它一样简单) /从裸仓库克隆。)
在客户端中,尝试这样做:
git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
git config --global pack.window "0"
或在git服务器中,尝试以下操作:修改:/home/git/repositories/***.git/config
,添加如下:
[pack]
window = 0
这为我解决了问题,希望对其他人有所帮助。 :)[https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header]
对我来说,这是因为托管git repo的远程服务器的对象/文件已损坏。 当我尝试重新打包时,它的内存不足。 我升级了实例内存,然后ssh-ed重新运行
git gc
这是文档的链接:
[HTTPS://git-三重门.com/book/u在/V2/git-internals-pack files]