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)
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"
刚刚得到这个错误,花了半天时间做了帖子中描述的所有事情: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)