【发布时间】:2018-01-24 19:03:28
【问题描述】:
尝试git pull,我收到错误消息:
remote: error: inflate: data stream error (incorrect data check)
remote: error: corrupt loose object '188bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7'
remote: fatal: loose object 188bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7 (stored in
./objects/18/8bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7) is corrupt
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header
我找到了this could be caused by out of memory on the server,但是服务器有超过2GB的空闲内存。
我也发现了this could be solved by doing a garbage collection on the remote repo,但这也会抛出错误:
git gc
Counting objects: 61619, done.
Delta compression using up to 2 threads.
error: inflate: data stream error (incorrect data check)
error: corrupt loose object '188bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7'
fatal: failed to read object 188bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7: Invalid a
rgument
error: failed to run repack
所以我让文件系统检查在 git 存储库上运行,并在我的远程存储库中执行 git fsck,我收到以下错误消息:
error: inflate: data stream error (incorrect data check)
error: sha1 mismatch 188bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7
error: 188bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7: object corrupt or missing
error: inflate: data stream error (incorrect data check)
error: sha1 mismatch 9dabcbe39f25e3a79ee6f2bd1598999ea2c45de5
error: 9dabcbe39f25e3a79ee6f2bd1598999ea2c45de5: object corrupt or missing
Checking object directories: 100% (256/256), done.
error: index CRC mismatch for object b2e2916e7daeb3a4a9187774d9a19a29b5f3dce1 fr
om ./objects/pack/pack-d77b3f792b3870c0c121223a58776ef537871b41.pack at offset 3
8157638
error: inflate: data stream error (incorrect data check)
error: cannot unpack b2e2916e7daeb3a4a9187774d9a19a29b5f3dce1 from ./objects/pac
k/pack-d77b3f792b3870c0c121223a58776ef537871b41.pack at offset 38157638
Checking objects: 100% (156533/156533), done.
Checking connectivity: 61617, done.
dangling commit d6251eef8e78c1592174c10004fc20e031b34be1
missing blob 188bf75e9cfba7e0a93fa3a15bdcce6c1b8858c7
missing blob 9dabcbe39f25e3a79ee6f2bd1598999ea2c45de5
git 试图告诉我什么,我该如何解决这个问题?如果有的话,我怎样才能防止将来出现此类回购损坏?
【问题讨论】:
-
如果你用力过猛,这个类比就会失败,但是:把它想象成 Git 检测到你的磁盘(或其他存储介质,如果你使用磁盘驱动器以外的东西)着火了。 Git 对此无能为力。 Git需要可靠的存储:它可以检查是否存储是否可靠,如果存储失败,您可以使用重复的存储库,但您需要某种可靠的存储在某处.
-
@torek 你是说我们的 git repo 所在的 LVM 存储失败了吗?这确实是个坏消息。
-
@torek 我在逻辑磁盘上执行了fsck,但没有发现错误。
-
好吧,类比已经分崩离析了。 :-) 目前尚不清楚什么 损坏了存储库:它可能不是底层硬件,而是其他一些弄乱文件内容的软件。 Git 所知道的是,它之前写入的位与它现在基于内置哈希检查读回的位不匹配。
标签: git