Есть ли способ восстановить мой репозиторий с историей фиксации в такт.
# git log
fatal: object 01aeb2bf2e93b238f0e0422816b3e55518321ae7 is corrupted
Из прочтения ссылки ниже это выглядит так, как будто я заберу его и начну.
Есть ли способ восстановить мой репозиторий с историей фиксации в такт.
# git log
fatal: object 01aeb2bf2e93b238f0e0422816b3e55518321ae7 is corrupted
Из прочтения ссылки ниже это выглядит так, как будто я заберу его и начну.
Есть ли у вас клоны этого хранилища в другом месте? Возможно, вы захотите прочитать этот пост от Linus Torvalds, чтобы восстановить этот поврежденный объект, предполагая, что поврежденный объект является блобом (содержимое файла).
Я оказался в той же ситуации, возможно, из-за неправильного завершения работы виртуальной машины, в которой я работал. В .git/objects было около 10 объектов с нулевой длиной. Насколько я могу судить, фактические файлы исходного кода были точными, только репозиторий был закрыт.
$ git status
fatal: object fbcf234634ee04f8406cfd250ce5ab8012f92b08 is corrupted
В некоторых предложениях, которые я видел где-то в другом месте (включая ссылку Linus, упомянутую выше), я пытался временно перемещать поврежденные объекты git, жаловался на .git/objects в другом месте. Когда они переместили всех, я получил:
$ git status
fatal: bad object HEAD
Примерно через час Googling и попробовав различные решения, я сдался и начал новую рабочую копию, используя "git clone", чтобы вытащить из источника (что было около 2 часов позади моей рабочей копии). Затем я использовал rsync -rC
(-C исключает файлы SCM), чтобы скопировать измененные файлы из перепутанной рабочей копии в новую рабочую копию.
Вы также можете попытаться восстановить эти объекты, просто скопировав их из других репозиториев.
Моя виртуальная машина разбилась во время записи нажатой фиксации, поэтому объекты были безопасно сохранены на локальном компьютере. Я scp'ed их на виртуальную машину и вуаля - git fsck не выдает ошибок.
Просто удалите поврежденный объект, о котором жалуется git. Я смог решить ту же проблему именно сейчас.
fatal: object 985a4870e7d890b314d2794377045a8b007c7925 is corrupted
Для вышеуказанной ошибки я смог найти соответствующий объект по адресу:
project_directory/.git/objects/98/5a4870e7d890b314d2794377045a8b007c7925
Здесь вы можете увидеть, что файл имеет 0 байт, и его удаление позволяет начать выборку.
Предположительно предыдущая выборка была прервана, оставив поврежденный объект с размером = 0 байт.
Имела ту же проблему, в зависимости от того, какая команда 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>
Я удалил последнюю строку (которая has =) и вставил эту строку в .git/refs/heads/master
, стирая ее содержимое
Затем я смог успешно выполнить.
У меня была такая же проблема. Я заметил, что я не был зарегистрирован как root. Когда я вошел в систему под именем root, я смог проверить журнал без знака ошибки.
Чтобы укрепить этот хороший статус, я сделал следующее:
git add .
git commit -a -m "stabilize git"
Я вышел из корня и попытался вытащить из клиента. Это сработало для меня потом.
Когда я выполнил добавление и фиксацию, я понял, что все в порядке с тем, что было в каталоге. У меня не было изменений, видимых через "git статус".