GIT ошибка pull - удаленный объект поврежден
$ git pull
remote: fatal: object 21f3981dd35fccd28febabd96f27241eea856c50 is corrupted
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header
Любые идеи, почему это не удается?
Когда я запускаю git --bare fsck-objects --full
, я вижу только висячие ссылки, но не сломанные ссылки. Также git gc
никак не помогло. Когда я отказываюсь или тяну от другого клона, я не вижу этой ошибки.
Ответы
Ответ 1
Как сказал Джулиан, см. https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header
Это действительно может быть проблема с памятью, и чтобы мы не потеряли решение здесь:
git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
Ответ 2
Добавление git config --global pack.window "0"
работало для меня... наряду со следующим
git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
git config --global pack.threads "1"
Причина:
Git clone сжимает данные при клонировании репозитория
Он сжимает данные на сервере до получения данных/файлов.
Если на сервере не хватает памяти, вы получите указанную выше ошибку при упаковке объектов
Вы можете исправить эту проблему, сделав git клонировать репозиторий, не упаковывая объекты на сервере со следующим.
git config --global pack.window "0"
Ответ 3
Похоже, что ответ находится в комментариях: git fsck
Ответ 4
Только что получил эту ошибку и потратил полдня на все, что описано в сообщении: fsck, repack, gc, настройка параметров памяти.
Также после этого сообщения: http://git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id=HEAD
Но в итоге было так же просто, как найти поврежденный объект (21f3981dd35fccd28febabd96f27241eea856c50 в этом случае) в голом репозитории и заменить его на не поврежденную версию (которую можно найти в папке .git любого из локальных репозитории, которые вытащили/клонировали из открытого хранилища.)
Ответ 5
Это исправляет проблему для меня, и надежда помогает кому-то другому.:)
https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header
Ответ 6
Для меня это было потому, что мой удаленный сервер, на котором размещался репозиторий git, имел поврежденный объект/файл. Когда я попытался переупаковать, у него не хватило памяти. Я обновил свою память экземпляра, а затем снова ssh-ed и запустил
git gc
Вот ссылка на документацию:
https://git-scm.com/book/uz/v2/Git-Internals-Packfiles
Ответ 7
в клиенте, попробуйте сделать это следующим образом:
git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
git config --global pack.window "0"
или на сервере git, попробуйте следующее:
изменить: /home/git/repositories/***.git/config
, добавить ниже:
[pack]
window = 0