git push başarısız: RPC başarısız oldu; sonuç = 22, HTTP kodu = 411


127

Tek şubem var. Birkaç aydır kullanıyorum

git push origin master

yerel depoma işlemek için. Dün gece yerel depomda bazı küçük değişiklikler yaptıktan ve aynı komutu kullanarak zorlamayı denedikten sonra şu hatayı aldım:

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

Googledim ve bunun gibi sorular buldum ve bu soruların hiçbiri sorunumu çözmüyor.

Cevapların çoğu kopmuş kafa sorununu düşündürüyor . Yine de kafamın kopuk olduğunu düşünmüyorum. Yanlış dalda olduğumu da sanmıyorum (sadece bir şubem olduğu için ...)

Neyin yanlış olduğunu anlamak için birkaç deney yaptım ve işte aldığım sonuçlar:

(1) İlk my gelir git statusçıkışı

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# egal.aux
# egal.blg
# egal.out
# egal.pdf
# egalcar.aux
# egalcar.blg
# egalcar.pdf
nothing added to commit but untracked files present (use "git add" to track)

(2) git reflogYazdığımda, tüm yerel taahhütlerimi görebiliyorum, ancak uzak depo güncellenmiyor.

Ben yazarken (3) git branch -a, benim hemen

* master
  remotes/origin/master

Ben yazarken (4) git remote show origin, benim hemen

* remote origin
  Fetch URL: http://github.com/CherryQu921/egaldoc_en
  Push  URL: http://github.com/CherryQu921/egaldoc_en
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

Sanırım son çıktı satırı ("ileri sarılabilir") tuhaf, ama neyin yanlış olduğundan emin değilim ...


fast-forwardableyerel değişikliklerinizi uzak şubeye itebileceğiniz anlamına gelir, suç
teşkil etmez

Yanıtlar:


292

HTTP veya HTTPS ile bir Git deposuna büyük bir değişiklik kümesini göndermeye çalışırsanız, hata: gibi bir hata mesajı alabilirsiniz RPC failed; result=22, HTTP code = 411. Bunun nedeni, belirli HTTP işlemlerini 1 megabayt ile sınırlayan bir Git yapılandırma varsayılanından kaynaklanır.

Bu sınırı değiştirmek için yerel deponuzda çalıştırın

git config http.postBuffer *bytes*

bayt, izin verilen maksimum bayt sayısıdır. Örneğin:

git config http.postBuffer 524288000

500MB için (teşekkürler @Hengjie)


52
Bir örnek git config http.postBuffer 524288000500MB içindir.
Hengjie

9
Gitlab kullanıyorsanız, nginx yapılandırmanızı da değiştirmeniz gerekebilir ( /etc/nginx/sites-available/gitlab). Daha fazla bilgi: github.com/gitlabhq/gitlabhq/issues/3099
DanielB

ya gösterirse RPC failed; result=22, HTTP code = 502?
Dipesh Raichana

2
Hala aşağıdaki hatayı alıyorum git: RPC başarısız oldu; sonuç = 22, HTTP kodu = android stüdyosunda
bitbucket'ta

23

Bunu global olarak da yapabilirsiniz -

git config --global http.postBuffer 524288000

Bu, tüm yerel depoların 500 MB'a kadar veri aktarmasına izin verecektir.


3

Sağlanan çözümlerin hiçbiri bizim için işe yaramadı. Çözüm sshyerine bunun işe yaraması için geçiş yapmak zorunda kaldık HTTPS.


2

Windows için TortoiseGit kullanıyorsanız, en kolay yol tümleşik yapılandırmayı kullanmaktır.

Bir dosya gezgininde farenin sol düğmesine basın, TortoiseGit -> Ayarlar'ı seçin . Bilgi mesajını kabul edin. Şimdi, özelliği yalnızca mevcut proje için mi yoksa sistem genelinde mi yapılandırmak istediğinizi seçebilirsiniz. Sistem genelinde yapılandırma için "sistem genelinde gitconfig düzenle" düğmesine basın ve sonraki satırı bölüme ekleyin [http]:

postBuffer = 524288000

(o bölüm [http]yok, oluştur)


1

22 hatasını şu şekilde çözdüm: "git clone" komutunda kullanıcıya şifre vermedim. Klon işe yaradı ama itme olmadı. 22 hatası için çözüm: url'yi şu şekilde .git / config değiştirin: url = http: // user: pwd @ host / ... Sonra, push çalıştı.

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.