Cha*_*esB 7 git repository corruption
这是关于Git仓库被破坏的众多问题之一,正是一个出错的松散对象:
$ git gc
Counting objects: 3299, done.
error: inflate: data stream error (unknown compression method)
error: unable to unpack 831a5d31af4a0af2f5a367689bee27a44efc22c9 header
Delta compression using up to 6 threads.
Compressing objects: 100% (3283/3283), done.
error: inflate: data stream error (unknown compression method)
fatal: loose object 831a5d31af4a0af2f5a367689bee27a44efc22c9 (stored in .git/objects/83/1a5d31af4a0af2f5a367689bee27a44efc22c9) is corrupt
error: failed to run repack
Run Code Online (Sandbox Code Playgroud)
关于这个问题的现有答案(如何处理损坏的git对象文件?, 如何修复损坏的git存储库?或者由于缺少对象而导致Git损坏怎么办?)我已经831a5d31从损坏的存储库中删除了对象.
在我的情况下,我有一个存储库的克隆,似乎保存我缺少的对象,但没有文件objects/83/1a5d31af4a0af2f5a367689bee27a44efc22c9.如何修复我的存储库?
Cha*_*esB 10
如果文件存在于别处
清理存储库的对象已重新打包,这就是它不再存在为文件的原因.
要恢复它,首先将其作为文件保存在干净的存储库中
git show 831a5d31af4a0af2f5a367689bee27a44efc22c9 > 831a5-file
Run Code Online (Sandbox Code Playgroud)
移入831a5-file损坏的仓库,然后运行
git hash-object -w 831a5-file
Run Code Online (Sandbox Code Playgroud)
确保输出中给出的SHA1是 831a5d31af4a0af2f5a367689bee27a44efc22c9
这将存储对象,并且存储库已修复!
如果该文件在其他地方不存在
如果该文件在其他地方不存在,即在提交之后但在您能够推送之前发生了损坏,则有一种方法可以恢复您的存储库并重新提交更改.查看相关问题的答案.