Ошибка сервера 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
Есть также документация, написанная Линусом Торвальдсом о подобных ошибках и восстановлении больших двоичных объектов: нажмите здесь.