Ошибка сервера git: поврежденный объект удален

У меня есть ошибка в ответ на git fsck --full который corrupt loose object '...' на машине сервера git. У меня нет локального хранилища. Я не могу клонировать. У меня нет объекта в репо / объекты /...

У вас есть идеи, как это исправить? Объект не находится в каталоге repo.git/objects. Я могу SSH внутри серверной машины.

Любое предложение высоко ценится. Спасибо

РЕДАКТИРОВАТЬ

Я пробовал с

git gc --prune

но я получаю ту же ошибку

error: inflate: data stream error (invalid distance code) error: corrupt loose object '4e4c................' fatal: object 4e4c............. is corrupted error: failed to run repack

РЕДАКТИРОВАТЬ 2

git gc --aggressive --prune=now

дает мне ту же ошибку, а также

git gc --aggressive --prune=all

С

git ls-tree 4e4cc....

У меня такая же ошибка

РЕДАКТИРОВАТЬ 3

Я нашел локальное репо (10 ГБ) с последним коммитом, и я могу нажать на удаленный (20 ГБ). Я также могу вытащить из этого местного. Почему они отличаются по размеру? Я до сих пор не могу клонировать... и объект 4e4c............. не находится внутри.git/objects/

2 ответа

Решение

Я решил проблему. Git хранит объект типа 4e4cfe..., создавая каталог 4e (ex.repo/objects/4e/) и помещая объект 4cf3... в этот каталог. Я искал объект 4e4cfe... и, конечно, я не мог его найти. Однако объект был поврежден, но я нашел хороший (после git fsck --full -v) внутри локального репозитория, и я просто скопировал его в удаленный репозиторий. Таким образом, в конце, чтобы решить проблему, вам нужно просто "скопировать и вставить".

Я думаю, что это испорченный объект. Хотя это медленно, вы можете попробовать этот код:

git gc --aggressive --prune=now

Есть также документация, написанная Линусом Торвальдсом о подобных ошибках и восстановлении больших двоичных объектов: нажмите здесь.

Другие вопросы по тегам