Поврежденное дерево мерзавца? - PullRequest
8 голосов
/ 18 ноября 2010

У меня большие проблемы с git-репозиторием на моей локальной машине.

Я изменил файл, запустил git status, и файл появился как измененный. Я добавил файл, используя git add ., и он работал как обычно. Но когда я собирался зафиксировать изменения, я получил следующую ошибку:

error: garbage at end of loose object 'e91ce852822d32e380ed7ddd04c93066e3c600ea'
fatal: object e91ce852822d32e380ed7ddd04c93066e3c600ea is corrupted

Запустив git cat-file -t e91ce852822d32e380ed7ddd04c93066e3c600ea, я вижу, что объект является деревом.

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

Любая помощь приветствуется:)

Ответы [ 3 ]

3 голосов
/ 30 апреля 2013

Если ваше git-репо синхронизировано с внешним ресурсом (Github) и , если какое-либо решение не работает , вы можете повторно запустить свое репо

что я сделал:

# copy the corrupted .git dir
mv -f .git .gitback
git init
# keep your config file
cp .gitback/config .git/config
# load objects
git pull

Это сработало. Очевидно, что это не очень хорошее решение, но оно может помочь

2 голосов
/ 19 ноября 2010

Трудно сказать, что могло пойти не так, и это зависит от вашей версии Git и среды.
Например, в старые времена была zlib проблема с git1.5.1 , вызывающая то, чтовид сообщения из-за настроек legacyheaders = false.

Что касается восстановления дерева из незакрепленных объектов , этот ответ SO " Как восстановить объекты Git, поврежденные в результате сбоя жесткого диска? "иллюстрирует способ сделать это, после этого git fsck --full (как упоминает Марк Рушаков в комментарии).

git cat-file -t 6c8cae4994b5ec7891ccb1527d30634997a978ee

и проверкатип объекта.

Если тип является деревом: вы можете использовать 'git ls-tree', чтобы восстановить дерево из предыдущих резервных копий;затем 'git mktree', чтобы снова записать его в текущий репозиторий.

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

0 голосов
/ 31 мая 2011

Доброе утро, со своей стороны, я просто удалил каталог git и заново запустил git.

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