2014-05-09 2 views
2

Я столкнулся с синим экраном 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 сообщает мне, что есть локальные изменения (которые я не могу выполнить или сбросить).

Я полагаю, что я окончательно потерял некоторые данные, но хотел бы как можно больше восстановить этот локальный репозиторий: он содержит некоторые преданные данные, которые еще не были нажаты, и надеемся найти его где-то во внутренней структуре.

Любая помощь будет оценена по достоинству.

ответ

0

Мое предложение было бы обходной путь, но, возможно, он работает для вас:

  • взгляд на локальные изменения. Я думаю, что команда «git status» сделает это.
  • копировать/архивировать эти файлы из вашей файловой системы.
  • воссоздайте локальный репозиторий с нуля и вытащите последние изменения из источника.
  • перезаписать резервные копии файлов в вашей файловой системе.
  • теперь зафиксируйте свои изменения.
+0

'git status' throws" фатальный: плохой объект HEAD ". Кроме того, изменения, которые я хочу восстановить, не находятся в текущей проверенной ветке, но в другой локальной ветке я не могу проверить. Спасибо за вашу помощь. – Gaetan

Смежные вопросы