Фатальный: ранний EOF фатальный: индекс-пакет не прошел

У меня есть googled и найдено много решений, но никто не работает для меня.

Я пытаюсь клонировать с одного компьютера, подключаясь к удаленному серверу, который находится в локальной сети.
Выполнение этой команды с другого компьютера вызывает ошибку.
Но запустив команду SAME clone с помощью git://192.168.8.5... на сервере это хорошо и успешно.

Любые идеи?

[email protected] ~
$ git clone  -v git://192.168.8.5/butterfly025.git
Cloning into 'butterfly025'...
remote: Counting objects: 4846, done.
remote: Compressing objects: 100% (3256/3256), done.
fatal: read error: Invalid argument, 255.05 MiB | 1.35 MiB/s
fatal: early EOF
fatal: index-pack failed

Я добавил эту конфигурацию в .gitconfig, но не помог.
Использование версии git 1.8.5.2.msysgit.0

[core]
    compression = -1

Ответ 1

Сначала отключите сжатие:

git config --global core.compression 0

Далее, сделайте частичный клон, чтобы усечь количество информации:

git clone --depth 1 <repo_URI>

Когда это работает, зайдите в новый каталог и извлеките остальную часть клона:

git fetch --unshallow 

или, поочередно,

git fetch --depth=2147483647

Теперь сделайте регулярное нажатие:

git pull --all

Я думаю, что в версиях 1.8.x есть сбой с msysgit, что усугубляет эти симптомы, поэтому еще один вариант - попробовать более раннюю версию git (< = 1.8.3, я думаю).

Ответ 2

Эта ошибка может возникнуть для потребностей памяти git. Вы можете добавить эти строки в свой глобальный конфигурационный файл git, который .gitconfig в $USER_HOME, чтобы исправить эту проблему.

[core] 
packedGitLimit = 512m 
packedGitWindowSize = 512m 
[pack] 
deltaCacheSize = 2047m 
packSizeLimit = 2047m 
windowMemory = 2047m

Ответ 3

окончательно решен с помощью git config --global core.compression 9

Из потока вопросов BitBucket:

Я пытался почти пять раз, и это все еще происходит.

Тогда я попытался использовать лучшее сжатие, и это сработало!

git config --global core.compression 9

Из документации Git:

core.compression
Целое число -1.. 9, указывающее уровень сжатия по умолчанию. -1 - это значение по умолчанию для zlib.
0 означает отсутствие сжатия, а 1..9 - это различные компромиссы между скоростью и размером, 9 - самый медленный.
Если установлено, это обеспечивает значение по умолчанию для других переменных сжатия, таких как core.looseCompression и pack.compression.

Ответ 4

Как сказал @ingyhere:

Мелкий клон

Сначала отключите сжатие:

git config --global core.compression 0

Далее, давайте сделаем частичный клон, чтобы обрезать количество информации, поступающей вниз:

git clone --depth 1 <repo_URI>

Когда это сработает, перейдите в новый каталог и получите оставшуюся часть клона:

git fetch --unshallow

или, поочередно,

git fetch --depth=2147483647

Теперь сделайте тягу:

git pull --all

Тогда для решения проблемы вашей локальной ветки только мастер слежения

откройте ваш файл конфигурации git (.git/config) в редакторе по вашему выбору

где сказано:

[remote "origin"]
    url=<git repo url>
    fetch = +refs/heads/master:refs/remotes/origin/master

изменить линию

fetch = +refs/heads/master:refs/remotes/origin/master

в

fetch = +refs/heads/*:refs/remotes/origin/*

Сделай git fetch и git сейчас потянет все твои удаленные ветки

Ответ 5

В моем случае это было очень полезно:

git clone --depth 1 --branch $BRANCH $URL

Это ограничит выезд только указанной ветвью, следовательно, ускорит процесс.

Надеюсь, это поможет.

Ответ 6

Я получил эту ошибку, когда git закончилось нехватка памяти.

Освобождение памяти (в данном случае: разрешение компиляции заканчивается) и попытка снова работать для меня.

Ответ 7

Я пробовал все эти команды, и никто не работает для меня, но то, что работает, это изменение git_url на http вместо ssh

Если команда clone делает:

git clone <your_http_or_https_repo_url> 

else, если вы используете существующий репо, сделайте это с помощью

git remote set-url origin <your_http_or_https_repo_url>

надеюсь, что это поможет кому-то!

Ответ 8

В моем случае это была проблема подключения. Я был подключен к внутренней сети wifi, в которой у меня был ограниченный доступ к ресурсам. Это позволяло git делать выборку, но в определенное время она разбилась. Это означает, что это может быть проблема сетевого подключения. Проверьте, все ли работает правильно: антивирус, брандмауэр и т.д.

Поэтому ответ elin3t важен потому, что ssh повышает производительность загрузки, поэтому можно избежать проблем с сетью.

Ответ 9

Настройка ниже конфигурации не работает для меня.

[core] 
packedGitLimit = 512m 
packedGitWindowSize = 512m 
[pack] 
deltaCacheSize = 2047m 
packSizeLimit = 2047m 
windowMemory = 2047m

Как и в предыдущем комментарии, возможно, проблема с памятью в git. Таким образом, я стараюсь уменьшить рабочие потоки (с 32 до 8). Так что он не будет получать много данных с сервера одновременно. Затем я также добавляю "-f" для синхронизации других проектов.

-f: Proceed with syncing other projects even if a project fails to sync.

Тогда все отлично работает.

repo sync -f -j8

Ответ 10

Обратите внимание, что Git 2.13.x/2.14 (Q3 2017) действительно увеличивает значение по умолчанию core.packedGitLimit, которое влияет на git fetch:
Предельное значение упакованного по умолчанию git было увеличено на более крупных платформах (от 8 до 32 ГБ), чтобы сохранить "git fetch" из (восстанавливаемого) отказа, а "gc" - параллельная работа.

См. commit be4ca29 (20 апреля 2017 г.) Дэвид Тернер (csusbdt).
Помог: Джефф Кинг (peff).
(слияние Junio ​​C Hamano - gitster - в commit d97141b, 16 мая 2017 года)

Увеличение core.packedGitLimit

Когда core.packedGitLimit превышено, Git закроет пакеты.
Если операция повторной обработки происходит параллельно с извлечением, выборка может открыть пакет, а затем будет принудительно закрыть его из-за того, что он упал в GitLimit. После этого repack может удалить пакет из-под выборки, в результате чего выборка завершится неудачей.

Увеличьте значение core.packedGitLimit по умолчанию, чтобы предотвратить это.

В текущих 64-разрядных машинах x86_64 доступно 48 бит адресного пространства.
Похоже, что 64-битные ARM-машины не имеют стандартного количества адресного пространства (то есть, оно зависит от производителя), а машины IA64 и POWER имеют полные 64 бит.
Таким образом, 48 бит - это единственный предел, который мы можем разумно заботиться. Мы резервируем несколько бит 48-битного адресного пространства для использования ядра (это не строго необходимо, но лучше быть в безопасности) и использовать до остальных 45.
Репозиторий Git в ближайшее время будет находиться рядом с этим большим количеством, поэтому это должно предотвратить отказ.

Ответ 11

Предыдущий ответ рекомендует установить 512 м. Я бы сказал, что есть причины думать, что это неэффективно в 64-битной архитектуре. Документация для core.packedGitLimit гласит:

По умолчанию 256 МБ на 32-битных платформах и 32 ТБ (практически без ограничений) на 64-битных платформах. Это должно быть разумно для всех пользователей/операционных систем, за исключением самых крупных проектов. Вам, вероятно, не нужно корректировать это значение.

Если вы хотите попробовать его, проверьте, установлен ли он, а затем удалите настройку:

git config --show-origin core.packedGitLimit
git config --unset --global core.packedGitLimit

Ответ 12

В моем случае ничего не работало, когда протокол был https, затем я переключился на ssh и гарантировал, что я вытащил репо из последней фиксации, а не всей истории, а также конкретной ветки. Это помогло мне:

git clone --depth 1 "ssh:.git" --branch "specific_branch"

Ответ 13

Убедитесь, что на вашем диске достаточно свободного места.

Ответ 14

Из клона git я получал:

error: inflate: data stream error (unknown compression method)
fatal: serious inflate inconsistency
fatal: index-pack failed

После перезагрузки моей машины я смог клонировать штраф репо.

Ответ 15

У меня та же проблема. После первого шага выше я смог клонировать, но больше ничего не могу сделать. Не могу получить, вытащить или оформить старые ветки.

Каждая команда выполняется намного медленнее, чем обычно, а затем умирает после сжатия объектов.

I:\dev [master +0 ~6 -0]> git fetch --unshallow
remote: Counting objects: 645483, done.
remote: Compressing objects: 100% (136865/136865), done.

error: RPC failed; result=18, HTTP code = 20082 MiB | 6.26 MiB/s

fatal: early EOF

fatal: The remote end hung up unexpectedly

fatal: index-pack failed

Это также происходит, когда ваш реф использует слишком много памяти. Обрезка памяти исправила это для меня. Просто добавьте ограничение на то, что вы выбираете так ->

git fetch --depth=100

Это приведет к получению файлов, но с последними 100 изменениями в их истории. После этого вы можете выполнить любую команду просто отлично и с нормальной скоростью.

Ответ 16

Я отключил все загрузки, которые я делал в то же время, которые, возможно, освободили пространство и очистили/уменьшили пропускную способность

Ответ 17

Проблема git-daemon, кажется, была решена в v2.17.0 (проверено с неработающим v2.16.2.1). Т.е. обходной путь выделения текста в консоли для "блокировки выходного буфера" больше не требуется.

С https://github.com/git/git/blob/v2.17.0/Documentation/RelNotes/2.17.0.txt:

  • Ассорти исправления для "git daemon". (объединить ed15e58efe jk/daemon-fixes позже в maint).

Ответ 18

Перепробовав большинство ответов здесь, я получил ошибку в PUTTY SSH Client со всеми возможными созвездиями.

Как только я переключился на OpenSSH, ошибка исчезла (удалите переменную среды GIT_SSH и перезапустите git bash).

Я использовал новую машину и новейшие версии git. На многих других/более старых машинах (в том числе и в AWS) она работала, как и ожидалось, с PUTTY и без какой-либо настройки git.

Ответ 19

У меня такая же проблема. REPO был слишком велик для загрузки через SSH. Как и рекомендовано @elin3t, я клонировал через HTTP/HTTPS и изменил УДАЛЕННЫЙ URL в .git/config, чтобы использовать SSH REPO.

Ответ 20

У меня та же проблема, что и ниже, когда я запускаю git pull

remote: Counting objects: 149, done.
Connection to git-codecommit.us-east-1.amazonaws.com closed by remote host.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

Затем я проверил состояние git status Было так много незафиксированных изменений, что я исправил проблему, зафиксировав и перенеся все незафиксированные изменения.

Ответ 21

Ни одно из приведенных выше решений не помогло мне.

Решение, которое наконец-то сработало для меня, - переключение SSH-клиента Переменная среды GIT_SSH была установлена на OpenSSH, предоставляемый Windows Server 2019. Версия 7.7.2.1

C:\Windows\System32\OpenSSH\ssh.exe

Я просто установил шпаклевку, 0,72

choco install putty

И изменил GIT_SSH на

C:\ProgramData\chocolatey\lib\putty.portable\tools\PLINK.EXE

Ответ 22

Это сработало для меня, настроив сервер имен Googles, потому что не был указан стандартный сервер имен, а затем перезапуск сети:

sudo echo "dns-nameservers 8.8.8.8" >> /etc/network/interfaces && sudo ifdown venet0:0 && sudo ifup venet0:0

Ответ 23

Если вы находитесь в Windows, вы можете проверить, что git не работает с клонированием с индексом-индексом " не удалось?.

В принципе, после запуска вашей команды git.exe daemon ... выберите текст из этого окна консоли. Повторите попытку/клонирование, он может работать только сейчас!

Подробнее см. этот ответ.

Ответ 24

Ни один из них не работал у меня, но использование встроенного инструмента Heroku делало трюк.

heroku git:clone -a myapp

Документация здесь: https://devcenter.heroku.com/articles/git-clone-heroku-app