Подтвердить что ты не робот

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 никак не помогло. Когда я отказываюсь или тяну от другого клона, я не вижу этой ошибки.

4b9b3361

Ответ 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 любого из локальных репозитории, которые вытащили/клонировали из открытого хранилища.)

Ответ 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