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也无济于事。 当我重新克隆或从另一个克隆中拉出时,看不到此错误。

Senthil A Kumar asked 2020-06-24T01:24:25Z
7个解决方案
29 votes

正如朱利安所说,请参阅[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"
cazcade_neil answered 2020-06-24T01:25:37Z
15 votes

添加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"

logan answered 2020-06-24T01:26:24Z
12 votes

答案似乎在注释中:git fsck

robrich answered 2020-06-24T01:26:43Z
5 votes

刚遇到此错误,花了半天时间完成帖子中描述的所有事情:fsck,repack,gc,配置内存选项。

此帖子也紧随其后:[http://git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id=HEAD]

但是最后,这就像在裸存储库中找到损坏的对象(在这种情况下为21f3981dd35fccd28febabd96f27241eea856c50)并将其替换为未损坏的版本(可以在任何拉出的本地存储库的.git文件夹中找到它一样简单) /从裸仓库克隆。)

Shiva answered 2020-06-24T01:27:13Z
2 votes

在客户端中,尝试这样做:

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 
litian.zhuang answered 2020-06-24T01:27:37Z
1 votes

这为我解决了问题,希望对其他人有所帮助。 :)[https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header]

Julian answered 2020-06-24T01:27:58Z
0 votes

对我来说,这是因为托管git repo的远程服务器的对象/文件已损坏。 当我尝试重新打包时,它的内存不足。 我升级了实例内存,然后ssh-ed重新运行

git gc

这是文档的链接:

[HTTPS://git-三重门.com/book/u在/V2/git-internals-pack files]

zeros-and-ones answered 2020-06-24T01:28:27Z
translate from https://stackoverflow.com:/questions/4170317/git-pull-error-remote-object-is-corrupted