Kaydetmeyi github'a iletirken Git başarısız oluyor


131

Github'da barındırdığım bir git deposunu dizüstü bilgisayarıma klonladım. Birkaç commit'i sorunsuz bir şekilde github'a aktarmayı başardım. Ancak şimdi aşağıdaki hatayı alıyorum:

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

Buradan takılıyor ve sonunda terminale CTRL+ Cgeri dönmem gerekiyor.


Neden bir HTTP hatası var? SSH aracılığıyla github'a zorlamıyor musunuz?
Cascabel

Açıklığa kavuşturmak için: originbölümündeki url .git/confighttp demiyor, değil mi?
Cascabel

@Jefromi Okuma / yazma http bağlantısını kullanarak özel depomu klonladım.
Stephen Melvin

Hayır, https yazıyor. Bu garip çünkü başarısızlıktan önce iki itme yapabildim.
Stephen Melvin

Yanıtlar:


293

Ben de aynı sorunu yaşadım ve bunun, itmeye çalıştığınız deponun boyutu (düzenlenen- veya belirli bir dosyanın boyutu) ile ilgisi olduğuna inanıyorum.

Temel olarak yeni depolar oluşturabildim ve onları github'a itebildim. Ancak mevcut olan işe yaramaz.

HTTP hata kodu beni destekliyor gibi görünüyor, bu bir 'Uzunluk Gerekli' hatası. Bu yüzden belki de maks. Kim bilir.

DÜZENLE

Sorunun büyük dosyalar olabileceğini buldum. O noktaya kadar başarılı itmelerim olmasına rağmen zorlamayacak bir güncellemem vardı. Kayıtta yalnızca bir dosya vardı ama 1,6 milyon oldu

Bu yüzden aşağıdaki yapılandırma değişikliğini ekledim

git config http.postBuffer 524288000

500M dosya boyutuna kadar izin vermek için ve sonra benim push çalıştım. Http protokolü üzerinden büyük bir deponun iterek başlangıçta sorun bu olabilirdi.

DÜZENLEMEYİ SONLANDIR

onu çalıştırabilmemin yolu (postBuffer'ı değiştirmeden önce DÜZENLE) depomu daraltmak, ssh üzerinden git yapabilen bir makineye kopyalamak ve onu github'a itmekti. Daha sonra, orijinal sunucudan bir itme / çekme yapmaya çalıştığınızda, https üzerinden çalışması gerekir. (çünkü orijinal bir itmeden çok daha küçük bir veri miktarıdır).

Bu yardımcı olur umarım.


411 yerine HTTP 501 hatası almamla birlikte benim için de çalıştı. Teşekkürler!
Emaad Ahmed Manzoor

Teşekkürler! bu işe yaradı ve hatta yüklemeyi hızlandırdı. Yeni Windows Azure Web Sitelerine bir web sitesi göndermeye çalışıyordu ve başarısız olmaya devam ediyordu.
Jake

23
Bu değeri çok yükseğe ayarlamanın bir dezavantajı var mı?
snogglethorpe

@snogglethorpe Potansiyel olarak: "Transfer-Encoding: chunked, yerel olarak büyük bir paket dosyası oluşturmaktan kaçınmak için kullanılır". Değeri çok büyük bir şeye ayarlarsanız, itmeye çalıştığınızda büyük paket dosyaları oluşturmaya başlayabilirsiniz. Tüm dosya sistemleri büyük dosyaları iyi işlemeyebilir ve verimli bir şekilde budamayabilirler. Bu dosyaları .git / objects / pack'de görebilirsiniz.
kenevir

Değiştirmek zararlı olmaktan http.postBufferçok gereksizdir , ancak olumsuz bir yan etkisi vardır: Varsayılanın üzerine çıkarmak, daha büyük itmeler için gecikmeyi artırabilir (çünkü istemci HTTP isteğini daha büyük parçalara arabelleğe alacaktır).
Swatantra Kumar

8

Bu komut yardımcı olmazsa

git config http.postBuffer 524288000

Ssh yöntemini https olarak değiştirmeyi deneyin

git remote -v
git remote rm origin 
git remote add origin https://github.com/username/project.git

4

Bir sunucu sorununa benziyor (yani bir "GitHub" sorunu).
Eğer bakarsak bu konuya zaman, bu olabilir git-http-backendbozuk bir yığın alır. (Ve o zamandan beri sadece yerine koymak bir akıllı http desteği ...)
Ama gerçek nedeni ne olursa olsun, aynı zamanda son ile ilişkili olabilir sporadik bozulma GitHub dosya sunucusundan biri .

Hala bu hata mesajını görüyor musunuz? Çünkü yaparsan:

  • yerel Git sürümünüzü kontrol edin (ve en son sürüme yükseltin)
  • bunu bir GitHub hatası olarak bildirin .

Not: Akıllı HTTP Desteği , kimliği doğrulanmış bir kurumsal güvenlik duvarı proxy'sinin arkasındaki bizler için çok önemlidir!

Şu andan itibaren, http://url üzerinden bir depoyu klonlarsanız ve Git istemcisi sürüm 1.6.6 veya üstünü kullanıyorsanız, Git otomatik olarak daha yeni ve daha iyi taşıma mekanizmasını kullanacaktır.
Bununla birlikte daha da şaşırtıcı olanı, artık bu protokolü zorlayabilmeniz ve özel depoları da klonlayabilmenizdir. Özel bir depoya erişirseniz veya bir ortak çalışansanız ve push erişimi istiyorsanız, kullanıcı adınızı URL'ye girebilirsiniz ve Git, erişmeye çalıştığınızda sizden şifreyi isteyecektir.

Daha yaşlı müşteriler de daha eski, daha az verimli yola geri dönecekler, bu yüzden hiçbir şey bozulmamalı - sadece daha yeni müşteriler daha iyi çalışmalı.

Yani yine, önce Git istemcinizi yükselttiğinizden emin olun.


Bir ADSL kablosuz yönlendiricisinin (French Orange Livebox) arkasında benzer sorunlar yaşadım: SSH anahtarımı github.com'da yayınlamak imkansız , alternatif bir internet erişimi kullanana kadar https ... üzerine takılı kaldım.
Yves Martin

Akıllı HTTP Desteği, göndermeye çalıştığımda "hata: RPC başarısız; sonuç = 22, HTTP kodu = 0" mesajı alırken beni güvenlik duvarı proxy'mizden geçirmeyi başardı.
Boggin

@Boggin Evet, bir proxy'nin arkasında olduğunda smart http'nin genellikle tercih edilen seçenek olduğunu onaylıyorum. Standart http / https bağlantı noktası (neredeyse) her zaman açıktır.
VonC


0

Kendi barındırılan bonobo-git sunucuma göndermeye çalıştım ve http.postbuffer'ın proje dizini anlamına geldiğini fark etmedim ...

yani sadece diğer kafası karışmış olanlar için:

neden? Benim durumumda, varlıklar içeren büyük zip dosyalarım vardı ve bazı PSD'ler de itildi - tahmin ettiğim tampon için büyük.

Bu http.postbuffer nasıl yapılır: Bu komutu sunucuda değil, .git klasörünün yanında, proje src dizininizde çalıştırın.

dikkat edin, bu tampon boyutunda büyük geçici (yığın) dosyalar oluşturulacaktır.

Not: En büyük dosyalarınızı kontrol edin, ardından arabelleği ayarlayın.


-2

Çoğunlukla itme sorunu, itilmesi gereken dosyaların boyutundan kaynaklanmaktadır. Sadece 2 mb boyutundaki bazı kitaplıkları itmeye çalışıyordum, sonra da itme sonucu 7 ile RPC hatası veriyordu. Hat 4 mbps ve iyi çalışıyor. Sonraki bazı denemeler beni başarıya ulaştırdı. Böyle bir hata gelirse, birkaç dakika bekleyin ve denemeye devam edin.

Ayrıca, github çalışmıyorsa veya yanlarında dengesiz bir ağ varsa, bazı RPC hataları olduğunu da öğrendim.

Bu nedenle, belirli aralıklarla denemeye devam etmek tek seçenektir!


-2

bu durumlarda, https sıkışmışsa ssh'yi deneyebilirsiniz.

Ayrıca arabellek boyutunu astronomik bir rakama yükseltmeyi deneyebilirsiniz, böylece artık arabellek boyutu hakkında endişelenmenize gerek kalmaz git config http.postBuffer 100000000

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.