помилка: помилка RPC; передача згортання закрита, залишилися невидатні дані для читання


130

Я зіткнувся з цією помилкою, коли намагаюся клонувати сховище з GitLab (GitLab 6.6.2 4ef8369):

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

remote: Counting objects: 66352, done.
remote: Compressing objects: 100% (10417/10417), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

Потім клон переривають. Як я можу цього уникнути?

Відповіді:


223

Це трапляється частіше, ніж ні, я перебуваю на повільному зв’язку з Інтернетом і мені доводиться клонувати пристойно величезний сховище git. Найпоширеніша проблема полягає в тому, що з'єднання закривається і весь клон скасовується.

Cloning into 'large-repository'...
remote: Counting objects: 20248, done.
remote: Compressing objects: 100% (10204/10204), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining 
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

Після безлічі спроб і помилок і безлічі «віддалених кінці несподівано повісили» у мене є спосіб, який працює для мене. Ідея полягає в тому, щоб спочатку зробити дрібний клон, а потім оновити сховище зі своєю історією.

$ git clone http://github.com/large-repository --depth 1
$ cd large-repository
$ git fetch --unshallow

10
Це єдина відповідь, яка описує вирішення проблеми без переходу на SSH. Це працювало для мене, дякую!
garie

14
Ключовим тут є --depth 1і --unshallow. Це також працює для отримання наявного репо при повільному з'єднанні: git fetch --depth 1тоді git fetch --unshallow.
Андрій Т.

1
Для наочності @AndrewT. git fetch --unshallowКоманда розглядає втрату зв’язку більш прощаючим способом, ніж git clone? І ось що тут має значення?
Лоуелл

2
Тепер git fetch --unshallowкоманда дає RPC failed;помилку
ms_27

1
Не працювало для мене. Помилка на git fetch --unshallow. Гадаю, моя репо-служба занадто велика навіть для такого підходу. Працював лише SSH.
Джонатан Кабрера

60

Через кілька днів сьогодні я просто вирішив цю проблему. Створіть ключ ssh, дотримуйтесь цієї статті:

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

Декларуйте це

  1. Провайдер Git (GitLab, що я використовую, GitHub).
  2. Додайте це до місцевої ідентичності.

Потім клонуйте за командою:

git clone username@mydomain.com:my_group/my_repository.git

І жодної помилки не трапляється.

Вищезазначена проблема

помилка: помилка RPC; curl 18 передача закрита, залишилися невидатні дані для читання

тому що мають помилку під час клонування протоколом HTTP (curl командою) .

І вам слід збільшити розмір буфера:

git config --global http.postBuffer 524288000

7
Перехід з HTTP на SSH працює для мене. Налаштування http.postBufferне працювало.
thangdc94

якщо помилка все-таки є, слід відредагувати свій ssh-конфігураційний файл vi /users/username/.ssh/config та додати serverAliveInterval 120 та вийти з vi за допомогою wq (для збереження та виходу). Це фактично не дозволить серверу виникнути в очікуванні та помилках з'єднання.
Танвір Сінгх

це приємно, але хто знає, чому це відбувається для 100% клонованих?
workplaylifecycle

Зміна http.postBufferпрацювала для мене - дякую!
Негар Замірі

Дякую, це працює для мене, за це рішення слід було проголосувати більше :)
Садмі

17

Коли я намагався клонувати з віддаленого пристрою, неодноразово виникав той самий випуск:

remote: Counting objects: 182, done.
remote: Compressing objects: 100% (149/149), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

Нарешті це спрацювало для мене:

git clone https://username@bitbucket.org/repositoryName.git --depth 1

3
що - поглиблення 1 робить
Вахдат Кашмірі

Добре працював для мене.
vijay junupalli

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

6

вам потрібно вимкнути стиснення:

git config --global core.compression 0

тоді потрібно використовувати дрібний клон

git clone --depth=1 <url>

то найважливіший крок - вступити у свій клонований проект

cd <shallow cloned project dir>

тепер розкрийте клон, крок за кроком

git fetch --depth=N, with increasing N

напр.

git fetch --depth=4

тоді,

git fetch --depth=100

тоді,

git fetch --depth=500

ви можете вибрати, скільки кроків потрібно, замінивши цю N,

і, нарешті, завантажте всі інші версії за допомогою,

git fetch --unshallow 

оновити, якщо це допоможе вам :)


5

Просте рішення: Скоріше клонування через https, клонування через ssh.

Наприклад:

git clone https://github.com/vaibhavjain2/xxx.git - Avoid
git clone git@github.com:vaibhavjain2/xxx.git - Correct

Так. Я користувач Windows.
Vaibhav Jain

5

Проблеми з мережевим зв’язком.
Можливо, через постійний час очікування з'єднання.
Найкращий спосіб - це перейти на іншу мережу.


5

Ці кроки працювали для мене: використання git://замістьhttps://


3
Ласкаво просимо до переповнення стека. Спробуйте надати трохи детальнішу відповідь, щоб кожен, хто хоче спробувати ваше рішення, міг зробити це легко.
McMutton

насправді ця відповідь є більш конкретною, ніж наступні в цій темі ..
xxxvodnikxxx

4

Як було сказано вище, спочатку запустіть свою команду git з bash, додавши на початку розширені директиви журналу: GIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...

наприклад, GIT_CURL_VERBOSE=1 GIT_TRACE=1 git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin це покаже вам детальну інформацію про помилки.


2

У мене ця проблема виникла через конфігурацію проксі. Я додав ip git-сервер у виняток проксі. Сервер git був локальним, але змінна середовища no_proxy була встановлена ​​неправильно.

Я використовував цю команду для виявлення проблеми:

#Linux:
export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

#Windows
set GIT_TRACE_PACKET=1
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1

Натомість з'явилося "Проксі-авторизація", оскільки сервер git виявився не повинен проходити через проксі. Але справжньою проблемою був розмір файлів, визначений правилами проксі


2

Для мене проблема полягала в тому, що з'єднання закривається до того, як завершиться весь клон. Я використовував Ethernet замість Wi-Fi. Тоді це вирішує для мене


1

Спробував усі відповіді тут. Я намагався додати какаоди до своєї машини.

У мене не було ключа SSH, тому дякую @Do Nhu Vy

https://stackoverflow.com/a/38703069/2481602

І нарешті використаний

git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master

щоб остаточно виправити проблему, знайдену https://stackoverflow.com/a/50959034/2481602


1

Здається, ця помилка трапляється частіше при повільному або неспокійному підключенні до Інтернету. Я зв’язався з хорошою швидкістю Інтернету, тоді він працює ідеально.


1

Ця проблема виникає, коли виникає проблема проксі-сервера або повільна мережа. Можна перейти з розчином глибини або

git fetch --all  or git clone 

    

Якщо це призведе до помилки curl 56 Recv neuspeh, тоді завантажте файл через zip або надайте назву гілки замість --all

git fetch origin BranchName 

-1

Зміна протоколу клонування git.

наприклад, ця помилка сталася, коли "git clone https: // xxxxxxxxxxxxxxx "

ви можете спробувати з "git clone git: // xxxxxxxxxxxxxx", можливо тоді добре.


-6

Ці кроки для мене працюють:

cd [dir]
git init
git clone [your Repository Url]

Я сподіваюся, що це працює і для вас.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.