Я столкнулся с синим экраном Windows, обновляя инструмент истории gitk после проверки. Когда мой компьютер перезагрузился, мое местное репо было полностью перепутано. Любая команда git приводит к следующему сообщению об ошибке:Как восстановить локальный репозиторий после сбоя ПК?
error: unable to unpack c6424c31a54e292669cfdcba3136e7962c690437 header
error: inflateEnd: stream consistency error (no message)
fatal: loose object c6424c31a54e292669cfdcba3136e7962c690437 (stored in .git/objects/c6/424c31a54e292669cfdcba3136e7962c690437) is corrupt
Файл с файлом заполнен 0. Следуя разным сообщениям о восстановлении локального репо, я запустил git fsck
, что приводит к тому же выходу ошибок. После резервной копии .git каталога, я удалил поврежденный файл и повторно побежал git fsck
много раз (удаляя поврежденные файлы один за другим), пока я не получил следующий вывод:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (38484/38484), done.
error: HEAD: invalid sha1 pointer c6424c31a54e292669cfdcba3136e7962c690437
error: refs/heads/CSS does not point to a valid object!
error: 8a91e61fae289397ca2668a3971199dc1596decf: invalid sha1 pointer in cache-tree
error: a21652baded5946d40820d716b14ab86008889e8: invalid sha1 pointer in cache-tree
broken link from tree 770bb33eb5f833e57562a2f1d9a4c23da0865b16
to tree 8a91e61fae289397ca2668a3971199dc1596decf
broken link from tree 770bb33eb5f833e57562a2f1d9a4c23da0865b16
to tree a21652baded5946d40820d716b14ab86008889e8
dangling commit <sha1> <many times>
dangling blob <sha1> <many times>
missing tree 8a91e61fae289397ca2668a3971199dc1596decf
missing tree a21652baded5946d40820d716b14ab86008889e8
Недостающая дерево sha1 и соответствуют поврежденному файлу, который я удалил ранее.
c6424c31
также является одним из поврежденных файлов, которые я удалил, а refs/heads/CSS - текущая ветка.
git ls-tree
для 770bb33e
возвращает корневую директорию моего проекта. git ls-tree
для недостающих деревьев, конечно, возвращает not a tree object
. Я не имею понятия о поврежденном файле или фиксации.
Я не могу проверить другую ветку или мастер, потому что git сообщает мне, что есть локальные изменения (которые я не могу выполнить или сбросить).
Я полагаю, что я окончательно потерял некоторые данные, но хотел бы как можно больше восстановить этот локальный репозиторий: он содержит некоторые преданные данные, которые еще не были нажаты, и надеемся найти его где-то во внутренней структуре.
Любая помощь будет оценена по достоинству.
'git status' throws" фатальный: плохой объект HEAD ". Кроме того, изменения, которые я хочу восстановить, не находятся в текущей проверенной ветке, но в другой локальной ветке я не могу проверить. Спасибо за вашу помощь. – Gaetan