Github Push Error: RPC gagal; hasil = 22, kode HTTP = 413


129

masalah bodoh dengan Github terjadi sekarang. Saya memiliki jumlah perubahan yang layak (ukuran ~ 120MB), ketika saya mencoba untuk mendorong, inilah yang terjadi:

error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly 
fatal: The remote end hung up unexpectedly

Saya sudah selesai

git config http.postBuffer 524288000, sehingga sepertinya tidak menjadi masalah. Apa itu?


3
Untuk pengunjung masa depan, jika Anda mendapatkannya HTTP code = 0, GitHub sedang down, seperti kemarin.
Pengguna StackExchange

3
Saya dapatkan HTTP code = 0ketika proxy saya memblokir. Proxy http saya berfungsi dengan github, tetapi https tidak untuk proxy perusahaan saya. Saya pikir proxy HTTPS saya memaksa NTLM, sementara HTTP menerima BASIC. Saya mengubah URL asal repo dari https ke http dan itu berhasil untuk saya. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

Jawaban:


206

Jika Anda mendapatkan kesalahan 413, maka masalahnya bukan terletak pada git tetapi dengan server web Anda . Server web Anda yang memblokir file unggahan besar.

Solusi untuk nginx

Cukup muat nginx.confdan tambahkan client_max_body_size 50m;(ubah nilai sesuai kebutuhan Anda) di blok http.

Muat ulang nginx untuk menerima konfigurasi baru dengan mengeksekusi sudo service nginx reloaddan coba lagi untuk mendorong komit Anda ke http.

Solusi untuk Apache

Dalam httpd.confadd Anda LimitRequestBody 52428800(mengubah nilai sesuai kebutuhan Anda) di dalam <Directory />blok. Dengan melakukan ini, Anda dapat membatasi permintaan seluruh sistem file server, hanya satu Host Virtual atau direktori.

Saya harap ini membantu.


1
50m tidak cukup bagi saya, tetapi ini memecahkan masalah saya! Terima kasih!
Kevin C. Krinke

Saya harus melakukan itu juga pada proxy nginx perantara.
jperelli

2
Bagaimana jika Anda tidak menggunakan Nginx?
Katianie

ada solusi untuk instalasi gitlab omnibus ..? versi terbaru 12.1
shashwat

Setelah banyak mencari, mengumpat, dan menangis. (dalam urutan itu) saya menemukan bahwa file konfigurasi embed terletak di: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk

55

Saya menemukan jawabannya !!! Tentu saja saya akan langsung setelah saya mengenai posting!

Saya telah mengatur repo untuk menggunakan url HTTPS, saya mengubahnya ke alamat SSH, dan semuanya kembali berfungsi dengan sempurna.


51
Bukan itu alasan masalahnya. Itu hanya solusi. Saya ingin tahu mengapa gagal di https.
Steve Walsh

4
Bagi saya ssh bukan pilihan. Jadi jika Anda berada dalam situasi yang sama @ZincX, lihat jawaban saya di atas.
Tinou

2
Ini hanya pekerjaan. Jawaban Tinou harusnya menjadi jawaban yang diterima.
Ben

1
bagaimana Anda mengubahnya?
Dainius Kreivys

Banyak orang mungkin tidak memiliki akses ke server web mereka sehingga informasi ini sangat dihargai!
Matius

38

perintah untuk mengubah url jarak jauh (dari https -> git @ ...) adalah sesuatu seperti ini

git remote set-url origin git@github.com:GitUserName/GitRepoName.git

asal di sini adalah nama remote saya (do git remote dan yang keluar adalah asal Anda).


2
Dalam kasus bitbucket (tombol 'Klon') saya punya masalah ketika dihapus ssh://dari ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitJadi hati-hati, teman-teman!
Fightlight

9

Saya memiliki masalah yang sama tetapi saya menggunakan proxy terbalik.

Jadi saya harus mengatur

client_max_body_size 50m; 

di dalam kedua file konfigurasi:

  • di server web gitlab nginx (seperti yang dikatakan di dalam jawaban sebelumnya)
  • tetapi juga pada proksi reverse nginx yang dihosting di server khusus.

ada solusi untuk instalasi gitlab omnibus ..?
shashwat


Ingin berterima kasih atas solusi ini, saya memiliki pengaturan ini.
tjeerdnet

6

Saya sudah memiliki "HTTPS //" di URL git namun menghadapi kesalahan ini.

Yang saya lakukan adalah menambahkan opsi -u dengan push dan itu berhasil.

git push -u origin master


4

Bagi mereka yang menggunakan IIS 7 untuk meng-host git http/ httpsendpoint:

Anda perlu meningkatkan uploadReadAheadSize.

Luncurkan Manajer Layanan Informasi Internet (IIS)

  1. Perluas bidang Server

  2. Perluas Situs

  3. Pilih situs yang ingin Anda modifikasi.

  4. Di bagian Fitur, klik dua kali Configuration Editor

  5. Di bawah Sectionpilih:system.webServer > serverRuntime

  6. Ubah uploadReadAheadSizebagian (Nilai harus antara 0dan 2147483647.)

  7. Klik Apply

  8. Mulai ulang Situs Web


Untuk me-restart situs web saya memilih Situs Web Default dan di sisi kanan, di bawah Tindakan ada tombol Stop dan Start .
jgoeders

Perbaikan ini masih diperlukan dalam IIS 10.
jgoeders

2

Jika Anda menghadapi masalah ini saat mendorong perubahan dalam ukuran besar kemudian jalankan perintah di bawah ini di terminal.

git config --global http.postBuffer 157286400

Lihat ini untuk lebih jelasnya.


1

Kesalahan terjadi di 'libcurl', yang merupakan protokol dasar untuk unggahan https. Solusi adalah entah bagaimana memperbarui libcurl. Untuk mendapatkan detail lebih lanjut tentang kesalahan, atur GIT_CURL_VERBOSE = 1

https://confluence.atlassian.com/pages/viewpage.action?pageId=306348908

Arti kesalahan, sesuai libcurl doc: CURLE_HTTP_RETURNED_ERROR (22)

Ini dikembalikan jika CURLOPT_FAILONERROR disetel TRUE dan server HTTP mengembalikan kode kesalahan yang>> 400.

http://curl.haxx.se/libcurl/c/libcurl-errors.html


1

Saya mendapat masalah ini ketika saya mencoba mengkloning git repo di mesin Linux.

URL berikut ini berfungsi untuk saya di windows

http://swamy@git.swamy.com/scm/project/swamy-main.git

sedangkan URL berikut berfungsi di mesin Linux dan memiliki https di URL

https://swamy@git.swamy.com/scm/project/swamy-main.git

1

Saya mengalami kesalahan ini ( kesalahan: RPC gagal; hasil = 22, kode HTTP = 413 ) ketika saya mencoba mendorong komit awal saya ke repositori BitBucket baru. Kesalahan terjadi pada saya karena repo BitBucket tidak memiliki cabang master . Jika Anda menggunakan SourceTree, Anda bisa membuat cabang master pada sumber dengan menekan tombol Git Flow .


1

Apakah Anda menggunakan tautan https alih-alih tautan ssh? Karena tautan https dibatasi oleh ukuran unggahan HttpServer (seperti Apache, Ngnix), tidak ada batasan seperti itu saat menggunakan ssh.

Gunakan metode berikut untuk beralih ke tautan ssh.

  1. Terminal terbuka.
  2. Beralih ke direktori kerja proyek Anda.
  3. Dapatkan nama repositori jarak jauh
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. Ubah alamat git ke tautan ssh.
git remote set-url origin git@github.com:[user_name]/[project_name].git

Jika Anda menentukan nama repositori jarak jauh, lanjutkan langsung ke langkah 4. Sekarang, Anda dapat melakukan operasi push dengan senang hati.



0

https kloning intis gagal (ssh berfungsi, lihat di bawah):

12:00 jean@laptop:~/tmp$ GIT_CURL_VERBOSE=1 git clone https://gist.github.com/123456.git username
Initialized empty Git repository in /home/jean/tmp/username/.git/
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> GET /123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:51 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Expire cleared
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/info/refs?service=git-upload-pack'
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept: */*
Pragma: no-cache

< HTTP/1.1 200 OK
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:52 GMT
< Content-Type: application/x-git-upload-pack-advertisement
< Transfer-Encoding: chunked
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Pragma: no-cache
< Cache-Control: no-cache, max-age=0, must-revalidate
< Vary: Accept-Encoding
<
* Connection #0 to host gist.github.com left intact
* Couldn't find host gist.github.com in the .netrc file; using defaults
* About to connect() to gist.github.com port 443 (#0)
*   Trying 192.30.252.142... * connected
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
* found 141 certificates in /etc/ssl/certs/ca-certificates.crt
* SSL re-using session ID
*        server certificate verification OK
*        common name: *.github.com (matched)
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: C=US,ST=California,L=San Francisco,O=GitHub\, Inc.,CN=*.github.com
*        start date: Mon, 30 Apr 2012 00:00:00 GMT
*        expire date: Wed, 09 Jul 2014 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,CN=DigiCert High Assurance CA-3
*        compression: NULL
*        cipher: ARCFOUR-128
*        MAC: SHA1
> POST /123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result
Content-Length: 116

< HTTP/1.1 301 Moved Permanently
< Server: GitHub.com
< Date: Fri, 01 Nov 2013 05:00:53 GMT
< Content-Type: text/html
< Content-Length: 178
< Location: https://gist.github.com/gist/123456.git/git-upload-pack
< Vary: Accept-Encoding
<
* Ignoring the response-body
* Connection #0 to host gist.github.com left intact
* Issue another request to this URL: 'https://gist.github.com/gist/123456.git/git-upload-pack'
* Violate RFC 2616/10.3.2 and switch from POST to GET
* Couldn't find host gist.github.com in the .netrc file; using defaults
* Re-using existing connection! (#0) with host gist.github.com
* Connected to gist.github.com (192.30.252.142) port 443 (#0)
> GET /gist/123456.git/git-upload-pack HTTP/1.1
User-Agent: git/1.7.1
Host: gist.github.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-upload-pack-request
Accept: application/x-git-upload-pack-result

* The requested URL returned error: 400
* Closing connection #0
error: RPC failed; result=22, HTTP code = 400

Ini bekerja: git clone git@gist.github.com:123456.git


OP tidak bertanya tentang kloning, tetapi tentang push.
Owen Blacker

1
Nah, OP bertanya tentang komunikasi dengan github. Mengapa saya menjawab dengan jawaban tentang intisari saya tidak tahu.
Jean Jordaan

Hah, cukup adil :)
Owen Blacker

0

Menghadapi masalah yang sama. Dalam kasus saya, itu adalah versi GIT yang tidak kompatibel di beberapa pengguna yang mengakses (menarik / mendorong) proyek yang sama.

baru saja memperbarui versi GIT dan memperbarui jalur pada pengaturan Android studio dan itu berfungsi dengan baik untuk saya.

Edit -

Git untuk Windows (1.9.5) mengalami masalah, memperbarui yang sama dapat membantu.


0

Menghadapi masalah yang sama namun itu diselesaikan dengan membersihkan repositori git (Bersihkan file yang tidak dilacak menggunakan "git clean").


1
ketika saya melakukan git clean, ia menunjukkan kesalahan ini: fatal: clean.requireForce default menjadi true dan bukan -i, -n, atau -f diberikan; menolak untuk membersihkan
Chandni

untuk @Chandni dan siapa pun yang menghadapi pesan kesalahan yang sama git membantu Anda sendiri, coba git clean -imisalnya untuk memulai dalam mode interaktif.
melalui

@melihat - Terima kasih
Chandni

0

Perlu mengubah url jarak jauh ke ssh atau https

git remote set-url origin git@github.com:laravel/laravel.git

atau

git remote set-url origin https://github.com/laravel/laravel.git

Semoga ini bisa membantu :)


0

ketika saya menggunakan url https untuk mendorong ke master jarak jauh, saya bertemu dengan proble yang sama, saya mengubahnya ke alamat SSH, dan semuanya kembali berfungsi dengan sempurna.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.