фатальный: ранний EOF фатальный: сбой индексного пакета

Я погуглил и нашел много решений, но ни одно из них не работает для меня.

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

Любые идеи ?

user@USER ~
$ 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

person William    schedule 22.01.2014    source источник
comment
Я столкнулся с этой проблемой в течение 2-3 дней, когда пытался клонировать из VPN. в моем случае проблема заключалась в пропускной способности сети. Я исправил клонированием в высокоскоростной сети.   -  person Avijit Nagare    schedule 01.02.2017
comment
Я также заметил, что это связано с сетью.   -  person wonder    schedule 15.06.2017
comment
Я получил эту ошибку, потому что мои друзья не так хорошо знают git и помещают много изображений в репозиторий! знак равно   -  person Clite Tailor    schedule 19.11.2017
comment
Я также заметил, что это связано с сетью. Я также исправил клонированием в высокоскоростной сети.   -  person shashaDenovo    schedule 26.02.2020
comment
Я также получил ту же ошибку. Я использую оптоволоконное соединение (скорость загрузки 40 Мбит/с). И в моем репозитории нет больших файлов (например, изображений/видео). Тем не менее, все еще получаю ту же ошибку.   -  person Pawara Siriwardhane    schedule 07.03.2021
comment
Похоже на проблему с памятью, мой обходной путь состоял в том, чтобы клонировать через http вместо этого, который, похоже, не страдает от этих проблем. Пример: git clone 192.168.8.5/butterfly025.git   -  person Benpaper    schedule 22.06.2021


Ответы (36)


Во-первых, отключите сжатие:

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).

person ingyhere    schedule 11.03.2014
comment
Спасибо, это сработало отлично. Я попытался изменить http.postbuffer, но это не сработало, но после того, как я сделал, как указано в этом ответе, все сработало отлично. Я не использовал строку git fetch --depth=2147483647, но использовал все остальное. - person Nick Benedict; 24.06.2014
comment
git clone --depth 1 выдает ошибку You must specify a repository to clone. - person Eliza Wilson; 18.07.2014
comment
@EthenA.Wilson После этого вам нужно передать удаленный URL-адрес репозитория. Например. git clone --depth 1 git@host:user/my_project.git. - person Nathan Gould; 27.08.2014
comment
git clone --depth 1 работает для меня, но затем при выполнении git fetch --unshallow выдает начальную ошибку в конце. Как я могу получить оставшиеся файлы репутации? - person Jose A.; 19.03.2015
comment
@ Хосе А. -- Я столкнулся с этой проблемой, когда работал на более новой версии msysgit. Если вы используете msysgit, попробуйте более старую версию (‹=1.8.3). В противном случае попробуйте git fetch --depth 1000 (затем 2000 и т. д., увеличивая постепенно, пока все файлы не будут извлечены). - person ingyhere; 19.03.2015
comment
@Jose A. -- Кроме того, взгляните на это: stackoverflow.com/questions/4826639/ - person ingyhere; 19.03.2015
comment
Привет, дорогой друг. Спасибо за отличное решение. Но последний git pull --all не работает. Из-за git clone --depth 1 будет установлен диапазон выборки только одной ветки. Поэтому нам нужно сначала отредактировать .git/config. - person pjincz; 09.07.2016
comment
Имейте в виду, что это не настоящее решение, так как оно установит выборку только для одной ветки, и вы можете оказаться в такой ситуации: stackoverflow.com/questions/20338500/ - person wranvaud; 19.10.2016
comment
@William и pjincz: Это настолько реально, насколько это возможно. В первоначальном клоне репо Git не создает локальные ветки для соответствия удаленным, потому что он работает по бережливой парадигме. Вам нужно будет написать сценарий создания локальной ветки, как я предлагаю в этом посте, чтобы убедиться, что все удаленные ветки создаются локально. В любом случае, я бы не стал добавлять это в клон, если у вас возникли проблемы - сначала вытяните репо, а затем беспокойтесь о синхронизации ветвей. - person ingyhere; 03.01.2017
comment
Отлично работает, но почему core.compression = 0 такой важный фактор в обеспечении успешной передачи? Разве тогда core.compression = 0 не должно стать значением по умолчанию? (Я думаю, что git внутренне хорошо сжимает, поэтому, возможно, проблема заключается в сжатии сжатых данных, которое фактически может увеличить данные.) - person peschü; 09.02.2017
comment
Более того, с git clone --depth 1 <repo_URI>, за которым следует git fetch --unshallow, а затем git pull --all, я не получил все удаленные ветки. git branch -a не показывает их, показывает только master. Как я могу зарегистрировать другие удаленные ветки в незарегистрированном репо? - person peschü; 09.02.2017
comment
@peschü: см. мой ответ здесь. git branch -r | awk -F'origin/' '!/HEAD|master/{print $2 " " $1"origin/"$2}' | xargs -L 1 git branch -f --track - person ingyhere; 11.02.2017
comment
Это единственное, что сработало для меня после того, как я попробовал несколько других решений. Какова цель отключения сжатия? Его нужно снова включить после pull -all? - person MidnightJava; 10.05.2017
comment
Просто отключение сжатия исправило это для меня. - person Nic Cottrell; 10.11.2017
comment
Я не могу видеть все удаленные ветки, когда делаю git branch -r, тогда как я могу видеть все эти ветки в обычно клонированной папке. Как получить все удаленные ветки? - person Nisarg Patil; 19.04.2018
comment
Добавляя к комментарию @pjincz, и для нас, не очень разбирающихся в файлах конфигурации git, фактическое изменение, необходимое для того, чтобы заставить git fetch --all работать, состоит в том, чтобы изменить fetch = +refs/heads/master:refs/remotes/origin/master на fetch = +refs/heads/*:refs/remotes/origin/* ( master на * ), эта строка должна быть ниже узла [remote "origin"]. Закройте файл и повторите команду git fetch --all. Протестировано с git версии 2.19.2.windows.1 - person Lorenzo Solano Martinez; 27.11.2018
comment
Было бы неплохо, если бы кто-нибудь мог объяснить проблему и то, что это решение делает для ее решения в ответе. - person GoGoris; 22.10.2019
comment
Откуда ты так много знаешь о git :O - person Aravin; 16.04.2020
comment
С первого раза не получилось, после нескольких раз получилось. Что он делает внутри? - person Aravin; 16.04.2020
comment
Я обнаружил, что протокол SSH быстрее, чем другие, например. git clone --depth 1 git@host:user/my_project.git. - person Winter; 21.05.2020
comment
а зачем отключать сжатие? - person helix; 19.06.2020
comment
Значение core.compression используется по умолчанию для всех остальных параметров сжатия. Если есть проблемы с сетью или нестабильность сервера, и в то же время иметь дело с большими пакетами или гигантскими файлами, сжатие может быть дорогостоящим с точки зрения времени. При работе с нестабильностью сети, включая повторные попытки и возможные тайм-ауты, дополнительные затраты времени на сжатие гигантских файлов могут предвещать тайм-аут. Аналогичным образом, дельта-сжатие на неправильно сконфигурированном сервере с большими файлами может увеличить потребление памяти, поэтому отключение сжатия может исправить неправильную конфигурацию, предотвратив узкие места в памяти. - person ingyhere; 22.06.2020
comment
Эта процедура разбивает клон на небольшие управляемые фрагменты. Сам Git (абстрагируется как микрофайловая система) состоит из больших двоичных объектов, деревьев и карты, содержащие данные фиксации файла. pull — это сокращение для fetch, затем merge. Если часть выборки испорченное слияние (на самом деле раскрутка на новую ветку по умолчанию) не удастся. Неглубокий клон создает скелет репозитория без гигантской истории, но с текущими файлами. Более поздние шаги вытягивают большую историю файлов. - person ingyhere; 22.06.2020
comment
Даже при этом пару раз не получилось. Я продолжал попытки, и это, наконец, сработало. Спасибо. - person Andrei Bazanov; 09.10.2020
comment
Поскольку это все еще происходит, я подумал, что добавлю, что dmesg указал путь в моем случае ... нехватка памяти (что произошло во время распаковки дельта-пакетов). Я добавил файл swp на свой ssd, подключенный к моему odroid, и ушел. Да, у них было значительное переключение контекста, но это сработало. Решение в этой статье работает лучше. - person uDude; 17.10.2020
comment
Незначительный момент, но после клонирования git вы должны перейти в каталог репо, прежде чем выполнять выборку git. - person Ron HD; 21.01.2021
comment
Спасибо, это здорово - person Booharin; 04.03.2021
comment
Большое Вам спасибо. Этот метод спас мой день. Но сэр, не могли бы вы рассказать нам, почему мы получаем этот тип ошибки. В моем случае моя сеть тоже хорошая и в репозитории тоже нет больших файлов. Не могли бы вы добавить это тоже к своему ответу, пожалуйста? - person Pawara Siriwardhane; 07.03.2021
comment
@Pawara Я бы очень хотел помочь, но невозможно узнать основную причину без диагностики задействованных систем. Как разработчики, мы часто не имеем доступа к серверу. - person ingyhere; 07.03.2021
comment
@ingyhere я понимаю. Большое Вам спасибо. - person Pawara Siriwardhane; 07.03.2021

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

[core] 
packedGitLimit = 512m 
packedGitWindowSize = 512m 
[pack] 
deltaCacheSize = 2047m 
packSizeLimit = 2047m 
windowMemory = 2047m
person bhdrkn    schedule 30.03.2015
comment
Это сработало для меня - хотя мне все еще требовалось несколько попыток, но без этого изменения прерывание происходило на 30%, затем на 75% ... и однажды оно дошло до 100% и сработало. :) - person peschü; 15.03.2017
comment
Должен быть выбранный ответ - person Asim Qasımzade; 14.11.2018
comment
В Windows с git 2.19 это исправлено. В частности, добавление параметров, связанных с пакетом. - person Καrτhικ; 26.11.2018
comment
Работал! Спасибо! - person Guille Acosta; 29.07.2019
comment
у меня все еще не работает remote: Enumerating objects: 43, done. remote: Counting objects: 100% (43/43), done. remote: Compressing objects: 100% (24/24), done. error: inflate returned -55/26) fatal: unpack-objects failed - person Jeevan Chaitanya; 07.11.2019
comment
Работает на меня. Но установите 8096m для всех свойств. - person Mykola Shorobura; 08.02.2020
comment
Эта проблема часто возникала у меня в Windows 10 с Git 2.25.0. Я обнаружил, что если я неоднократно выполнял git pull с удаленной машины, иногда это удавалось. Но какая неприятность. Затем я обнаружил, что если вы запустите git daemon из встроенной подсказки Windows Bash, она работает на 100% без необходимости обходного пути. - person Stefan; 15.02.2020
comment
Они настроены на машине-сервере или машине-клиенте? - person M-Pixel; 05.06.2020
comment
@M-Pixel Его следует добавить в .gitconfig клиента. - person bhdrkn; 07.06.2020
comment
Это единственное, что у меня сработало при клонировании через SSH в Windows с большим репо. - person david.jade; 26.01.2021
comment
Решите мою проблему в Ubuntu! Спасибо! - person Wedson Quintanilha da Silva; 08.02.2021
comment
Спасибо, исправил мою проблему в Windows. - person Muhammad Haseeb; 16.02.2021
comment
Это решило проблему для меня в Windows 10. - person Faustin Carter; 16.07.2021

наконец решил git config --global core.compression 9

Из обсуждения проблем BitBucket:

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

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

git config --global core.compression 9

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

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

person Jacky    schedule 29.04.2018
comment
Нужно было запустить git repack в сочетании с этим решением, и тогда это сработало. - person erikH; 19.10.2018
comment
Это сработало, даже не пробовал другие решения, потому что это самое короткое и элегантное. должен быть принят ответ! - person metablaster; 02.12.2019
comment
У меня это тоже работает, через VPN и корпоративный прокси. --compression 0 не сработало, как и все .gitconfig изменения, предложенные выше. - person Terrence Brannon; 10.12.2019
comment
Вероятно, изменение параметров конфигурации здесь (для уменьшения размера передаваемых данных) будет выполнять эту работу поочередно. - person ingyhere; 06.08.2020

Как сказал @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

to

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

Сделайте git fetch, и git теперь вытащит все ваши удаленные ветки.

person cmpickle    schedule 30.10.2018
comment
Это работает, но я оставил сжатие до 9, а не до 0, что не удалось. - person metablaster; 16.04.2020
comment
Вы также можете сделать это: git branch -r | awk -F'origin/' '!/HEAD|master/{print $2 " " $1"origin/"$2}' | xargs -L 1 git branch -f --track, затем git fetch --all --prune --tags и git pull --all. Он установит все ветки удаленного отслеживания локально. - person ingyhere; 06.08.2020
comment
Идеально! Это должен был быть ответ. - person venugopal; 21.05.2021

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

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

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

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

person sMajeed    schedule 04.08.2017

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

если это команда клонирования, выполните:

git clone <your_http_or_https_repo_url> 

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

git remote set-url origin <your_http_or_https_repo_url>

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

person elin3t    schedule 21.11.2014
comment
Этот вопрос действительно касается сообщения об ошибке в приведенном выше выводе, когда возникает проблема с синхронизацией гигантских фрагментов файлов из подключенного репо. Вы говорите, что переход на https с ssh позволил закончить клон? - person ingyhere; 11.12.2014
comment
Да! Это работает для меня, у меня есть репозиторий 4 ГБ+, и единственное решение, которое я получил, это работа! - person elin3t; 11.12.2014
comment
Это работает для меня, спасибо! Клонируйте с помощью https, а затем установите удаленный доступ обратно на ssh. - person Tuan; 14.11.2017
comment
Мне бы очень хотелось знать, почему это сработало. Есть ли в протоколе SSH что-то, что подавляет большие объекты, чего нет в HTTPS? Это проблема транспортного уровня? - person bdetweiler; 18.12.2018

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

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

person André Laszlo    schedule 07.01.2015
comment
Для меня было не так много доступной памяти, освобождение и повторная попытка решили эту проблему. - person Martin Cassidy; 15.01.2015

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

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

person iberbeu    schedule 19.01.2015
comment
Переключился на другую сеть, и тут наконец заработало. - person YTG; 17.01.2021

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

[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
person KimmyYang    schedule 11.09.2019

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

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

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

git config --show-origin core.packedGitLimit
git config --unset --global core.packedGitLimit
person 8DH    schedule 17.06.2019

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

git config --global pack.windowsMemory 256m
person Umair Iqbal    schedule 28.09.2020
comment
только эта команда исправила мою проблему - person Akshay Vijay Jain; 22.03.2021

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

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

person Shripada    schedule 31.08.2015

Обратите внимание, что Git 2.13.x/2.14 (3 квартал 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 закроет пакеты.
Если параллельно с выборкой выполняется операция переупаковки, выборка может открыть пакет, а затем будет вынуждена закрыть его из-за попадания в PackedGitLimit.
Переупаковка может затем удалить пакет из-под выборки, что приведет к сбою выборки.

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

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

person VonC    schedule 16.05.2017

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

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

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

person Vishav Premlall    schedule 29.08.2016
comment
что ты имеешь ввиду ТЭД? - person Vishav Premlall; 29.08.2016
comment
этот ответ должен был быть комментарием к ответу @ingyhere. - person mc0e; 14.03.2017


Касательно связано и полезно только в том случае, если у вас нет корневого доступа и вы вручную извлекаете Git из RPM (с rpm2cpio) или другого пакета (.deb, ..) в подпапку. Типичный пример использования: вы пытаетесь использовать более новую версию Git вместо устаревшей на корпоративном сервере.

Если git clone завершается ошибкой с fatal: index-pack failed без предварительного упоминания EOF, но вместо этого появляется справочное сообщение о usage: git index-pack, это значит, что существует несоответствие версии, и вам нужно запустить git с параметром --exec-path:

git --exec-path=path/to/subfoldered/git/usr/bin/git clone <repo>

Чтобы это происходило автоматически, укажите в своем ~/.bashrc:

export GIT_EXEC_PATH=path/to/subfoldered/git/usr/libexec
person Tyblitz    schedule 18.05.2020

У меня была такая же проблема, я даже пытался скачать проект прямо с сайта в виде zip-файла, но загрузка прерывалась на тех же процентах.

Эта единственная строка исправила мою проблему как шарм

git config --global core.compression 0

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

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

person Amirreza Moeini Yegane    schedule 11.07.2020
comment
То же самое здесь, это исправило это, тогда как более сложные предлагаемые решения оставили меня с непригодным для использования (хотя, вероятно, исправимым) клоном. - person Ron HD; 21.01.2021

Это сбивает с толку, потому что журналы Git могут указывать на любые ошибки подключения или авторизации ssh, например: ssh_dispatch_run_fatal: Connection to x.x.x.x port yy: message authentication code incorrect, the remote end hung up unexpectedly, early EOF.

Решение на стороне сервера

Оптимизируем репозиторий git на стороне сервера:

  1. Войдите в репозиторий git bare моего сервера.
  2. Вызовите git gc.
  3. Вызов git repack -A

Eg:

ssh admin@my_server_url.com
sudo su git
cd /home/git/my_repo_name # where my server's bare repository exists.
git gc
git repack -A

Теперь я могу клонировать этот репозиторий без ошибок, например. на стороне клиента:

git clone git@my_server_url.com:my_repo_name

Команду git gc можно вызвать на стороне клиента git, чтобы избежать подобной проблемы git push.


Если вы являетесь администратором службы Gitlab, активируйте Housekeeping вручную. Он вызывает внутренние git gc или git repack.


Решение на стороне клиента

Другое (хак, только на стороне клиента) решение загружает последний мастер без истории:

git clone --single-branch --depth=1 git@my_server_url.com:my_repo_name

Есть шанс, что переполнения буфера не произойдет.

person Michał Jaroń    schedule 05.06.2020

В моем случае проблема заключалась не в параметрах конфигурации git, а в том, что в моем репозитории был один файл, превышающий максимальный размер файла, разрешенный в моей системе. Я смог проверить это, пытаясь загрузить большой файл и превысив лимит размера файла в Debian.

После этого я отредактировал свой файл /etc/security/limits.conf, добавив в его конец следующие строки:

  • жесткий fsize 1000000
  • софт fsize 1000000

Чтобы действительно применить новые предельные значения, вам необходимо повторно войти в систему.

person tpalanques    schedule 06.03.2020
comment
Это работает? Можете ли вы сообщить мне, что именно делает это изменение? - person Annadate Piyush; 29.07.2020

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

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

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

person Paul Sturgess    schedule 16.08.2016
comment
В первый раз я не могу поверить, что вы просто перезагружаете свою машину, чтобы решить эту проблему, но я пробовал все, у меня были сообщения, которые не могут работать. поэтому я решил перезагрузить свою машину, это мое последнее решение для меня. мне повезло, когда машина запускается, я снова пытаюсь клонировать. Я не могу в это поверить. Это работает!!!!!!! - person Thxopen; 14.06.2020

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

person Bartłomiej Wach    schedule 02.12.2017

Похоже, что проблема с 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).
person GreenMoose    schedule 02.05.2018

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

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

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

person Max    schedule 29.01.2019

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

person Rodel    schedule 12.06.2019

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

person Kiran Reddy    schedule 20.06.2019

Ни одно из приведенных выше решений не сработало для меня.

Решение, которое, наконец, сработало для меня, заключалось в переключении клиента 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

person careri    schedule 04.09.2019

Я пробовал почти все предложения, сделанные здесь, но ни одно не сработало. Для нас проблема была темпераментной и становилась все хуже и хуже, чем больше становились репозитории (на нашем ведомом сборщике Jenkins Windows).

В итоге это была версия ssh, используемая git. Git был настроен на использование некоторой версии Open SSH, указанной в файле .gitconfig пользователей через переменную core.sshCommand. Удаление этой строки исправило это. Я считаю, что это связано с тем, что Windows теперь поставляется с более надежной/совместимой версией SSH, которая используется по умолчанию.

person aatwo    schedule 15.01.2020

В моем случае я просто обновил свою версию OpenSSL. Более старые версии OpenSSL имеют уязвимости, а также не имеют новейших алгоритмов, которые могут понадобиться. На сегодняшний день команда openssl version показывает OpenSSL 1.1.1f 31 марта 2020 года.

person Michael Behrens    schedule 04.08.2020

Я пытался несколько раз после того, как установил буфер git, как я уже упоминал в вопросе, теперь он работает.

Итак, если вы столкнулись с этой ошибкой, выполните эту команду:

git config --global http.postBuffer 2M

а затем повторите попытку несколько раз.

Ссылка:

ошибка git push: сбой RPC; результат = 56, HTTP-код = 0

person Akbar Asghari    schedule 20.10.2020

Качество сети имеет значение, попробуйте переключиться на другую сеть. Что мне помогло, так это изменение подключения к Интернету с высокоскоростного наземного широкополосного доступа Virgin Media на точку доступа на моем телефоне.

До этого я пробовал принятый ответ, чтобы ограничить размер клона, пробовал переключаться между 64- и 32-битными версиями, пытался отключить кеш файлов git, ни один из них не помог.

Затем я переключился на подключение через свой мобильный, и первый шаг (git clone --depth 1 ‹repo_URI›) удался. Вернулся к моему широкополосному доступу, но следующий шаг (git fetch --unshallow) также не удался. Итак, я удалил код, клонированный до сих пор, переключился на мобильную сеть, попробовал еще раз по умолчанию (git clone ‹repo_URI›), и это удалось без каких-либо проблем.

person balintn    schedule 10.11.2020

Хотя это не совсем такая же настройка, но у меня была эта проблема с общим ресурсом nfs, установленным в Ubuntu 20.04. Я не нашел никакого решения, поэтому я делюсь тем, как я его решил, надеясь, что смогу кому-то помочь.

Сообщение об ошибке было (иногда с/без предупреждения):

warning: die() called many times. Recursion error or racy threaded death!
fatal: premature end of pack file, 29 bytes missing
fatal: premature end of pack file, 24 bytes missing
fatal: index-pack failed

Мелкий клон Git, отключение сжатия и т. д. не решили проблему.

Когда я смонтировал общий ресурс с nfsvers=4.2 вместо nfsvers=4.0, проблема исчезла.

person lp_    schedule 12.03.2021

Следующий шаг отлично работает для меня.

введите здесь описание изображения

git clone --depth 1 https://github.com/user/rep.git

person Faisal Ahmed    schedule 03.05.2021

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

sudo echo "dns-nameservers 8.8.8.8" >> /etc/network/interfaces && sudo ifdown venet0:0 && sudo ifup venet0:0
person Luca Steeb    schedule 23.02.2015

Если вы работаете в Windows, вы можете проверить сбой git clone с ошибкой index-pack?.

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

См. этот ответ для получения дополнительной информации.

person user276648    schedule 07.06.2017

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

person IndieTech Solutions    schedule 11.03.2016

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

heroku git:clone -a myapp

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

person jpadvo    schedule 16.09.2015