hata: RPC başarısız oldu; kalan okunmuş veri ile curl transferi kapatıldı


130

GitLab'den bir depoyu klonlamaya çalıştığımda bu hatayla karşılaşıyorum (GitLab 6.6.2 4ef8369):

görüntü açıklamasını buraya girin

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

Klon daha sonra iptal edilir. Bundan nasıl kaçınabilirim?

Yanıtlar:


223

Sık sık oluyor, yavaş bir internet bağlantım var ve oldukça büyük bir git deposunu klonlamam gerekiyor. En yaygın sorun, bağlantının kapanması ve tüm klonun iptal edilmesidir.

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

Pek çok deneme yanılma ve birçok "uzak uç beklenmedik şekilde kapatıldıktan" sonra benim için işe yarayan bir yöntemim var. Buradaki fikir, önce sığ bir klon yapmak ve ardından depoyu geçmişiyle güncellemektir.

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

10
Bu, SSH'ye geçmeden sorunun geçici çözümünü açıklayan tek yanıttır. Bu benim için çalıştı, teşekkürler!
garie

14
Buradaki anahtar --depth 1ve --unshallow. Bu aynı zamanda, yavaş bağlantıda mevcut bir depoyu getirmek için de çalışır: git fetch --depth 1o zaman git fetch --unshallow.
Andrew T.

1
Berraklık @AndrewT için., git fetch --unshallowDaha bağışlayıcı bir şekilde bağlantılı kaybıyla komut fırsatlar git clone? Ve buradaki farkı yaratan bu mu?
Lowell

2
Şimdi, git fetch --unshallowkomut RPC failed;hata veriyor
ms_27

1
Benim için çalışmadı. Üzerinde başarısız oldu git fetch --unshallow. Sanırım repom bu yaklaşım için bile çok büyük. Yalnızca SSH çalıştı.
Jonathan Cabrera

60

Birkaç gün sonra, bugün bu sorunu çözdüm. Ssh anahtarı oluşturun, bu makaleyi izleyin:

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

Beyan et

  1. Git sağlayıcısı (kullandığım GitLab, GitHub).
  2. Bunu yerel kimliğe ekleyin.

Ardından komutla klonlayın:

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

Ve hiçbir hata olmaz.

Yukarıdaki problem

hata: RPC başarısız oldu; curl 18 aktarımı kalan okunmamış veri ile kapatıldı

çünkü HTTP protokolü ( curlkomut) ile klonlandığında hata oluşuyor .

Ve arabellek boyutunu artırmalısınız:

git config --global http.postBuffer 524288000

7
HTTP'den SSH'ye geçiş benim için çalışıyor. Config http.postBufferçalışmadı.
thangdc94

hala hata varsa, ssh yapılandırma dosyanızı vi /users/username/.ssh/config düzenlemeli ve serverAliveInterval 120 eklemeli ve wq kullanarak vi'den çıkmalısınız (kaydedip çıkmak için). Bu aslında sunucunun zaman aşımına uğramasını ve bağlantı kopma hatalarını önleyecektir.
Tanvir Singh

bu güzel, ama bunun neden% 100 klonlanmış için olduğunu bilen var mı?
workplaylifecycle

Değişim http.postBufferbenim için çalıştı - teşekkürler!
Negar Zamiri

Teşekkür ederim, benim için çalışıyor, bu çözüm daha fazla oy vermeli :)
Sadmi

17

Uzaktan kumandadan klonlamayı denediğimde, aynı sorunu defalarca aldım:

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

Sonunda bu benim için çalıştı:

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

3
ne - derinlik 1 yapar
Wahdat Kashmiri

Benim için iyi çalıştı.
vijay junupalli

Kaynak depo tamamlanmışsa, sığ havuzların getirdiği tüm sınırlamaları kaldırarak sığ bir depoyu eksiksiz bir depoya dönüştürün. Kaynak veri havuzu sığ ise, mümkün olduğu kadar çok getirerek mevcut arşivin kaynak havuzla aynı geçmişe sahip olmasını sağlayın.
RahmanRezaee

6

sıkıştırmayı kapatmanız gerekir:

git config --global core.compression 0

o zaman sığ klon kullanmanız gerekir

git clone --depth=1 <url>

daha sonra en önemli adım klonlanmış projenize cd yapmaktır

cd <shallow cloned project dir>

şimdi klonu adım adım kaldır

git fetch --depth=N, with increasing N

Örneğin.

git fetch --depth=4

sonra,

git fetch --depth=100

sonra,

git fetch --depth=500

Bu N'yi değiştirerek kaç adım istediğinizi seçebilirsiniz,

ve son olarak, kalan tüm revizyonları,

git fetch --unshallow 

yardımcı olacaksa oy verin :)


5

Basit Çözüm: Daha sonra https yoluyla klonlamak yerine, ssh aracılığıyla klonlayın.

Örneğin:

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

Evet. Windows kullanıcısıyım.
Vaibhav Jain

5

Ağ bağlantısı sorunları.
Kalıcı bağlantı zaman aşımı nedeniyle olabilir.
En iyi yol başka bir ağa geçmektir.


5

Bu adımlar benim için çalıştı: git://yerine kullanmakhttps://


3
Stack Overflow'a hoş geldiniz. Çözümünüzü denemek isteyen herkesin bunu kolayca yapabilmesi için lütfen biraz daha ayrıntılı yanıt vermeye çalışın.
McMutton

aslında, bu cevap bu konudaki sonrakilerden daha belirgindir ..
xxxvodnikxxx

4

Yukarıda belirtildiği gibi, her şeyden önce git komutunuzu bash'ın başında gelişmiş günlük yönergelerini ekleyerek çalıştırın: GIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...

Örneğin, GIT_CURL_VERBOSE=1 GIT_TRACE=1 git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin bu size ayrıntılı hata bilgilerini gösterecektir.


2

Benimle bu sorun proxy yapılandırması nedeniyle oluştu. IP git sunucusunu proxy istisnasına ekledim. Git sunucusu yereldi, ancak no_proxy ortam değişkeni doğru ayarlanmadı.

Sorunu tanımlamak için bu komutu kullandım:

#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

Buna karşılık, git sunucusu spot proxy'den geçmemesi gerektiği için "Proxy-Yetkilendirme" vardı. Ancak asıl sorun, vekil sunucu kuralları tarafından tanımlanan dosyaların boyutuydu.


2

Benim için sorun, bağlantının tüm klon tamamlanmadan önce kapanmasıydı. Wifi bağlantısı yerine ethernet kullandım. O zaman benim için çözer



1

Bu hata, yavaş veya sorunlu bir internet bağlantısında daha yaygın olarak görülüyor. İyi bir internet hızıyla bağlandım, sonra mükemmel çalıştı.


1

Bu sorun, proxy sorunu veya ağınız yavaş olduğunda ortaya çıkar. Derinlik çözümü ile gidebilirsiniz veya

git fetch --all  or git clone 

    

Bu curl 56 Recv hatası verirse, dosyayı zip yoluyla indirin veya --all yerine dalın adını belirtin.

git fetch origin BranchName 

-1

Git klon protokolünü denemek için değiştirme.

örneğin, bu hata "git clone https: // xxxxxxxxxxxxxxx "

"git clone git: // xxxxxxxxxxxxxx" ile deneyebilirsin, belki tamam o zaman.


-6

Bu adımlar benim için çalışıyor:

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

Umarım bu senin için de işe yarar.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.