git push gagal: RPC gagal; hasil = 22, kode HTTP = 411

127

Saya hanya punya satu cabang. Selama beberapa bulan saya telah menggunakan

git push origin master

untuk berkomitmen ke repositori lokal saya. Tadi malam setelah saya membuat beberapa perubahan kecil pada repositori lokal saya dan mencoba untuk mendorong menggunakan perintah yang sama, saya mendapatkan kesalahan ini:

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

Saya mencari di Google dan menemukan pertanyaan seperti ini dan ini , tetapi tidak ada jawaban untuk pertanyaan ini yang menyelesaikan masalah saya.

Sebagian besar jawaban menunjukkan masalah kepala terpisah . Namun saya tidak berpikir kepala saya terpisah. Saya juga tidak berpikir saya berada di cabang yang salah (karena saya hanya memiliki satu cabang ...)

Saya melakukan beberapa percobaan untuk mencari tahu apa yang salah, dan inilah hasil yang saya dapatkan:

(1) Pertama datang git statusoutput saya

# 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) Ketika saya mengetik git reflog, saya bisa melihat semua komit lokal saya, tetapi repositori jarak jauh tidak akan diperbarui.

(3) Saat saya mengetik git branch -a, saya mengerti

* master
  remotes/origin/master

(4) Saat saya mengetik git remote show origin, saya mengerti

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

Saya pikir baris terakhir dari output ("fast-forwardable") aneh, tapi saya tidak yakin apa yang salah ...

Zening Qu
sumber
fast-forwardableberarti Anda dapat mendorong perubahan lokal ke cabang jarak jauh, tidak ada kriminal :-)
Maksym Polshcha

Jawaban:

292

Jika Anda mencoba untuk mendorong set besar perubahan ke repositori Git dengan HTTP atau HTTPS, Anda mungkin mendapatkan pesan error seperti kesalahan: RPC failed; result=22, HTTP code = 411. Ini disebabkan oleh konfigurasi default Git yang membatasi operasi HTTP tertentu hingga 1 megabyte.

Untuk mengubah batas ini jalankan dalam repositori lokal Anda

git config http.postBuffer *bytes*

di mana byte adalah jumlah maksimum byte yang diizinkan. Sebagai contoh:

git config http.postBuffer 524288000

Untuk 500MB (terima kasih @Hengjie)

Maksym Polshcha
sumber
52
Contohnya adalah git config http.postBuffer 524288000untuk 500MB.
Hengjie
9
Jika Anda menggunakan gitlab, Anda mungkin perlu mengubah nginx config juga ( /etc/nginx/sites-available/gitlab). Info lebih lanjut: github.com/gitlabhq/gitlabhq/issues/3099
DanielB
bagaimana jika itu terlihat RPC failed; result=22, HTTP code = 502?
Dipesh Raichana
2
Saya masih menerima galat git berikut: RPC gagal; hasil = 22, kode HTTP = 504 dalam bitbucket di studio android
DJtiwari
23

Anda juga dapat melakukan ini secara global -

git config --global http.postBuffer 524288000

Itu akan memungkinkan semua repo lokal untuk mendorong hingga 500MB data.

jdr0dn3y
sumber
3

Tidak ada solusi yang disediakan yang bekerja untuk kami. Kami harus beralih untuk sshmembuat ini berfungsi, bukan HTTPSsolusinya.

otorisasi java
sumber
2

Jika Anda menggunakan TortoiseGit untuk Windows, cara termudah adalah menggunakan konfigurasi terintegrasi.

Dalam penjelajah file tekan tombol kiri mouse, pilih TortoiseGit -> Pengaturan . Terima pesan info. Sekarang, Anda dapat memilih jika Anda ingin mengonfigurasi properti hanya untuk proyek atau sistem saat ini. Untuk konfigurasi seluruh sistem tekan "edit systemit gitconfig" dan tambahkan baris berikutnya ke bagian [http]:

postBuffer = 524288000

(itu bagian [http]tidak ada, buat itu)

Errepunto
sumber
1

Saya memecahkan kesalahan 22 sebagai berikut: Pada perintah "git clone", saya TIDAK menyediakan kata sandi: user. Klon bekerja, tetapi tidak ada dorongan. Solusi untuk kesalahan 22: Ubah .git / konfigurasi url seperti ini: url = http: // pengguna: pwd @ host / ... Kemudian, push berfungsi.

Rob Lassche
sumber