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没有任何帮助。 当我reclone或从另一个克隆拉,我没有看到这个错误。

正如朱利安所说,见https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header

这真的可能是一个记忆问题,并确保我们不会失去解决scheme在这里:

 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

刚刚得到这个错误,花了半天的时间做了所有在post中描述的事情:fsck,repack,gc,configuration内存选项。

也跟着这个post: http : //git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id=HEAD

但是最后,它就像在裸仓库中find损坏的对象(在这种情况下是21f3981dd35fccd28febabd96f27241eea856c50)一样简单,并用非损坏的版本replace它(可以在任何本地存储库的.git文件夹中find) /从裸仓库克隆。)

这解决了我的问题,希望有助于sombody别的。 🙂 https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header

对我来说这是因为我的远程服务器托pipegit仓库有一个损坏的对象/文件。 当我尝试重新打包时,内存不足。 我升级了我的实例内存,然后ssh-ed回来跑

 git gc 

这里是文档的链接:

https://git-scm.com/book/uz/v2/Git-Internals-Packfiles

在客户端,尝试这样做:

 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服务器上,试试这个:modify:/ /home/git/repositories/***.git/config git/ /home/git/repositories/***.git/config .git/ /home/git/repositories/***.git/config ,在下面添加:

 [pack] window = 0