Журнал Git: фатальный объект [sha1] поврежден - PullRequest
20 голосов
/ 26 мая 2010

Можно ли как-нибудь исправить мой репозиторий с помощью истории коммитов в такте.

 # git log
fatal: object 01aeb2bf2e93b238f0e0422816b3e55518321ae7 is corrupted

После прочтения ссылки ниже, похоже, я ее уберу и начну заново.

http://www.miek.nl/s/7e76eadefe/

Ответы [ 6 ]

11 голосов
/ 26 мая 2010

У вас есть клоны этого хранилища в другом месте? Возможно, вы захотите прочитать эту запись Линуса Торвальдса, чтобы восстановить этот поврежденный объект, предполагая, что поврежденный объект является BLOB-объектом (содержимое файла).

8 голосов
/ 06 августа 2010

Я попал в ту же ситуацию, вероятно, из-за неправильного завершения работы виртуальной машины, на которой я работал. В .git / объекты, которые имели нулевую длину, были примерно 10 объектов. Насколько я могу судить, реальные файлы исходного кода были в порядке, просто хранилище было подключено.

$ git status
fatal: object fbcf234634ee04f8406cfd250ce5ab8012f92b08 is corrupted

В соответствии с некоторыми предложениями, которые я видел в других местах (включая сообщение Линуса, упомянутое выше), я пытался временно переместить поврежденные объекты, на которые жалуется git, из .git / objects в другом месте. Когда переехали все из них, я получил:

$ git status
fatal: bad object HEAD

После примерно часа поиска в Google и поиска различных решений я сдался и запустил новую рабочую копию, используя 'git clone', чтобы вытащить ее из источника (что было около 2 часов позади моей рабочей копии). Затем я использовал rsync -rC (-C исключает файлы SCM), чтобы скопировать измененные файлы из испорченной рабочей копии в мою новую рабочую копию.

1 голос
/ 16 июля 2015

У меня была такая же проблема. Я заметил, что я не вошел как root. Когда я вошел в систему как root, я смог проверить журнал без знака ошибки.

Чтобы укрепить этот хороший статус, я сделал это:

git add .
git commit -a -m "stabilize git"

Я вышел из root и попытался вытащить с клиента. Это сработало для меня потом.

Когда я делал добавление и коммит, я знал, что у меня все в порядке с тем, что было в каталоге. У меня не было изменений, видимых через "git status".

1 голос
/ 02 сентября 2013

У меня была такая же проблема, какую бы команду git я ни выполнял, она заканчивалась сообщением:

fatal: object <hash> is corrupted

У меня не было резервной копии, и я не хотел терять свои коммиты, поэтому я решил попробовать решение Jase и удалил файл 0 длины, который у меня был: .git/objects/00/<hash> Потом получил то же самое:

$ git status
fatal: bad object HEAD

Затем я попытался узнать, что случилось, и заглянул в .git/refs/heads/master, где у меня был хеш.

Я посмотрел на .git/logs/refs/head/master и нашел такие строки:

<old commit> <new commit> <author> <timestamp> commit: <commit message>

Я удалил последнюю строку (которая имела =) и вставил эту строку в .git/refs/heads/master, стерев ее содержимое

После этого я смог успешно выполнить коммит.

1 голос
/ 29 июня 2012

Просто удалите поврежденный объект, на который жалуется git. Мне удалось решить эту проблему только сейчас, таким образом.

fatal: object 985a4870e7d890b314d2794377045a8b007c7925 is corrupted

При указанной выше ошибке мне удалось найти соответствующий объект по адресу:

project_directory/.git/objects/98/5a4870e7d890b314d2794377045a8b007c7925

Где вы можете видеть, что файл равен 0 байтам, и удаление его позволило начать работу извлечения.

Предположительно предыдущая выборка была прервана, в результате чего поврежденный объект с размером = 0 байт.

1 голос
/ 30 марта 2012

Вы также можете попытаться восстановить эти объекты, просто скопировав их из других хранилищ.

Моя виртуальная машина дала сбой во время записи принудительной фиксации, поэтому объекты были сохранены на локальном компьютере. Я скопировал их на виртуальную машину и вуаля - git fsck не выдает ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...