GIT拉错误 - 远程对象已损坏

Sen*_*mar 48 git git-pull git-fetch

$ 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
Run Code Online (Sandbox Code Playgroud)

任何想法为什么失败?
当我跑步时,git --bare fsck-objects --full我只看到悬挂的链接,但没有断开的链接.也git gc没有任何帮助.当我从另一个克隆中重新克隆或拉动时,我没有看到这个错误.

小智 30

正如朱利安所说,请参阅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"
Run Code Online (Sandbox Code Playgroud)

  • 如果您的服务器使用智能http协议,则可能无法为该进程设置全局配置.相反,`cd`进入git存储库本身的目录并运行相同的命令而不使用`--global`. (2认同)

log*_*gan 15

添加git config --global pack.window "0"为我工作...以及以下

git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m" 
git config --global pack.threads "1"
Run Code Online (Sandbox Code Playgroud)

原因:

Git clone在克隆存储库时压缩数据

它在接收数据/文件之前压缩服务器内存上的数据.

如果服务器内存不足,则在打包对象时会出现上述错误

您可以通过使git克隆存储库而不在服务器上打包对象来解决此问题.

git config --global pack.window "0"


rob*_*ich 12

答案似乎在评论中: git fsck


Shi*_*iva 5

刚刚得到这个错误,花了半天时间做了帖子中描述的所有事情:fsck,repack,gc,配置内存选项.

这篇文章也是如此:http://git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id = HEAD

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


小智 5

在客户端,尝试这样做:

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m" 
git config --global pack.threads "1"
git config --global pack.window "0"
Run Code Online (Sandbox Code Playgroud)

或者在 git 服务器中,试试这个:修改:/home/git/repositories/***.git/config?在下面添加:

[pack]
         window = 0 
Run Code Online (Sandbox Code Playgroud)