【问题标题】:Fix corrupted git remote repo修复损坏的 git 远程仓库
【发布时间】: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


【解决方案1】:

几周前,我们终于找到了问题的根本原因。在更换了所有磁盘并且错误仍然发生后,我们最终将所有内容从受影响的物理机上移走。 Memtest86 然后告诉我们在哪里可以找到罪魁祸首。不确定如何在 ECC 内存上发生这种情况而不被检测到,但是,我不是管理员。

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2016-11-12
    • 2017-04-15
    • 2014-11-21
    • 1970-01-01
    相关资源
    最近更新 更多