Github Push Error: RPC ล้มเหลว; ผล = 22, รหัส HTTP = 413


129

ปัญหาโง่ ๆ ที่เกิดขึ้นกับ Github เกิดขึ้นในขณะนี้ ฉันมีการเปลี่ยนแปลงที่เหมาะสม (ขนาดประมาณ 120MB) เมื่อฉันพยายามที่จะผลักดันสิ่งนี้จะเกิดขึ้น:

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

ฉันทำไปแล้ว

git config http.postBuffer 524288000ดูเหมือนจะไม่เป็นปัญหา มันจะเป็นอะไร?


3
สำหรับผู้เยี่ยมชมในอนาคตหากคุณได้รับHTTP code = 0GitHub จะลงเช่นเมื่อวาน
ผู้ใช้ StackExchange

3
ฉันได้รับHTTP code = 0เมื่อพร็อกซีถูกบล็อก http พร็อกซีของฉันใช้กับ github ได้ แต่ https ไม่เหมาะสำหรับพร็อกซีขององค์กรของฉัน ฉันคิดว่าพร็อกซี HTTPS ของฉันบังคับใช้ NTLM ในขณะที่ HTTP ยอมรับ BASIC ฉันเปลี่ยน URL ต้นทางของ repo จาก https เป็น http และใช้งานได้สำหรับฉัน git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

คำตอบ:


206

หากคุณได้รับข้อผิดพลาด 413 แสดงว่าปัญหาไม่ได้เกิดจาก git แต่เกิดจากเว็บเซิร์ฟเวอร์ของคุณ เป็นเว็บเซิร์ฟเวอร์ของคุณที่บล็อกไฟล์อัพโหลดขนาดใหญ่

ทางออกสำหรับ nginx

เพียงโหลดของคุณnginx.confและเพิ่มclient_max_body_size 50m;(เปลี่ยนค่าตามความต้องการของคุณ) ในบล็อก http

โหลด nginx เพื่อยอมรับการกำหนดค่าใหม่โดยการดำเนินการ sudo service nginx reloadแล้วลองอีกครั้งเพื่อส่งการกระทำของคุณผ่าน http

ทางออกสำหรับ Apache

ในการhttpd.confเพิ่มของคุณLimitRequestBody 52428800(เปลี่ยนค่าความต้องการของคุณ) ภายใน<Directory />บล็อก การทำเช่นนี้คุณสามารถ จำกัด การร้องขอของระบบไฟล์เซิร์ฟเวอร์ทั้งหมดเพียงโฮสต์เสมือนหรือไดเรกทอรี

ฉันหวังว่านี่จะช่วยได้.


1
50m ไม่เพียงพอสำหรับฉัน แต่สิ่งนี้ช่วยแก้ปัญหาของฉันได้! ขอบคุณ!
Kevin C. Krinke

ฉันต้องทำเช่นนั้นในพร็อกซี nginx ระดับกลาง
jperelli

2
เกิดอะไรขึ้นถ้าคุณไม่ได้ใช้ Nginx
Katianie

วิธีแก้ปัญหาใด ๆ สำหรับการติดตั้ง gitlab omnibus .. ? รุ่นล่าสุด 12.1
shashwat

หลังจากการค้นหาการสบประมาทและการร้องไห้มากมาย (ตามลำดับนั้น) ฉันพบว่าไฟล์ config ฝังอยู่ที่: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk

55

ฉันคิดออก !!! แน่นอนฉันจะต้องหลังจากที่ฉันตีโพสต์!

ฉันมี repo ตั้งให้ใช้ HTTPS url ฉันเปลี่ยนเป็นที่อยู่ SSH และทุกอย่างกลับมาทำงานได้อย่างไม่มีที่ติ


51
นั่นไม่ใช่เหตุผลของปัญหา นั่นเป็นเพียงวิธีแก้ปัญหา ฉันต้องการทราบว่าทำไมจึงล้มเหลวใน https
Steve Walsh

4
สำหรับฉัน ssh ไม่ใช่ตัวเลือก ดังนั้นในกรณีที่คุณอยู่ในสถานการณ์เดียวกัน @ZincX โปรดดูคำตอบของฉันด้านบน
Tinou

2
นี่เป็นเพียงการแก้ไข คำตอบของ Tinou ควรเป็นคำตอบที่ยอมรับได้
Ben

1
คุณเปลี่ยนมันอย่างไร
Dainius Kreivys

หลายคนอาจไม่สามารถเข้าถึงเว็บเซิร์ฟเวอร์ของตนได้ดังนั้นข้อมูลนี้จึงได้รับการชื่นชมมาก!
แมทธิว

38

คำสั่งเพื่อเปลี่ยน URL ระยะไกล (จาก https -> git @ ... ) เป็นอะไรเช่นนี้

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

จุดกำเนิดที่นี่คือชื่อของรีโมทของฉัน (ทำ git remote และสิ่งที่ออกมาคือที่มาของคุณ)


2
ในกรณีของ bitbucket (ปุ่ม 'Clone') ฉันมีปัญหาเมื่อลบออกssh://จากssh://git@<bitbucket-repo>:<port>/dir/to/project.gitดังนั้นระวังพวก!
fightlight

9

ฉันมีปัญหาเดียวกัน แต่ฉันใช้พร็อกซีย้อนกลับ

ดังนั้นฉันต้องตั้งค่า

client_max_body_size 50m; 

ทั้งสองกำหนดค่าไฟล์:

  • บนเว็บเซิร์ฟเวอร์ gitlab nginx (ดังที่ได้กล่าวไว้ในคำตอบก่อนหน้า)
  • แต่ยังอยู่บนพร็อกซี nginx reverse ที่โฮสต์บนเซิร์ฟเวอร์เฉพาะ

วิธีแก้ปัญหาใด ๆ สำหรับการติดตั้ง gitlab omnibus .. ?
shashwat

อาจดูที่ omnibus / nginx conf: gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/…
grimabe

อยากจะขอบคุณสำหรับการแก้ปัญหานี้ฉันมีการตั้งค่านี้อย่างแน่นอน
tjeerdnet

6

ฉันมี "HTTPS //" ใน URL git แล้วยังพบข้อผิดพลาดนี้

ทั้งหมดที่ฉันทำคือการเพิ่มตัวเลือก -u ด้วยการกดและมันทำงานได้

git push -u origin master


4

สำหรับผู้ที่ใช้IIS 7เพื่อโฮสต์ git http/https endpoint:

คุณต้องเพิ่มของคุณ uploadReadAheadSizeคุณจำเป็นต้องเพิ่มของคุณ

เรียกใช้ Internet Information Services (IIS) Manager

  1. ขยายฟิลด์เซิร์ฟเวอร์

  2. ขยายไซต์

  3. เลือกไซต์ที่คุณต้องการทำการแก้ไข

  4. ในส่วนคุณสมบัติดับเบิลคลิก Configuration Editor

  5. ภายใต้การSectionเลือก:system.webServer > serverRuntime

  6. แก้ไขuploadReadAheadSizeส่วน (ค่าจะต้องอยู่ระหว่าง0และ2147483647.)

  7. คลิก Apply

  8. รีสตาร์ทเว็บไซต์


ในการเริ่มเว็บไซต์ใหม่ฉันเลือกเว็บไซต์เริ่มต้นและทางด้านขวาภายใต้การดำเนินการมีปุ่มหยุดและเริ่ม
เล่นกล

การแก้ไขนี้ยังคงต้องการใน IIS 10
jgoeders

2

หากคุณกำลังเผชิญกับปัญหานี้ในขณะที่ผลักดันการเปลี่ยนแปลงในขนาดใหญ่แล้วเรียกใช้คำสั่งด้านล่างใน terminal

git config --global http.postBuffer 157286400

ดูสิ่งนี้สำหรับรายละเอียดเพิ่มเติม


1

ข้อผิดพลาดเกิดขึ้นใน 'libcurl' ซึ่งเป็นโปรโตคอลพื้นฐานสำหรับการอัปโหลด https โซลูชันคือการอัปเกรด libcurl อย่างใด หากต้องการรับรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดให้ตั้ง GIT_CURL_VERBOSE = 1

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

ความหมายของข้อผิดพลาดตามเอกสาร libcurl: CURLE_HTTP_RETURNED_ERROR (22)

สิ่งนี้จะถูกส่งคืนหาก CURLOPT_FAILONERROR ถูกตั้งค่าเป็น TRUE และเซิร์ฟเวอร์ HTTP จะส่งคืนรหัสข้อผิดพลาดที่> = 400

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


1

ฉันพบปัญหานี้เมื่อฉันพยายามโคลน repo git ในเครื่อง Linux

URL ต่อไปนี้ใช้งานได้สำหรับฉันใน windows

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

ในขณะที่ URL ต่อไปนี้ทำงานในเครื่อง Linux และมี https ใน URL

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

1

ฉันมีข้อผิดพลาดนี้ ( ข้อผิดพลาด: RPC ล้มเหลว; ผลลัพธ์ = 22, รหัส HTTP = 413 ) เมื่อฉันพยายามผลักดันการเริ่มต้นไปยังที่เก็บ BitBucket ใหม่ ข้อผิดพลาดเกิดขึ้นสำหรับฉันเพราะ repo BitBucket ไม่มีสาขาหลัก หากคุณกำลังใช้SourceTreeคุณสามารถสร้างสาขาต้นแบบที่มาโดยการกดปุ่ม Git ไหล


1

คุณใช้ลิงค์ https แทนลิงค์ ssh หรือไม่ เนื่องจากลิงก์ https ถูก จำกัด โดยขนาดของการอัปโหลด HttpServer (เช่น Apache, Ngnix) จึงไม่มีข้อ จำกัด ดังกล่าวเมื่อใช้ ssh

ใช้วิธีการต่อไปนี้เพื่อเปลี่ยนเป็นลิงค์ ssh

  1. เปิดเทอร์มินัล
  2. สลับไปยังไดเรกทอรีทำงานของโครงการของคุณ
  3. รับชื่อของที่เก็บรีโมต
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. แก้ไขที่อยู่ git เป็นลิงค์ ssh
git remote set-url origin git@github.com:[user_name]/[project_name].git

หากคุณกำหนดชื่อที่เก็บรีโมตให้ดำเนินการตรงไปยังขั้นตอนที่ 4 ทีนี้คุณสามารถทำการกดได้อย่างมีความสุข



0

https clone of gists ล้มเหลว (ผลงาน ssh ดูด้านล่าง):

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

งานนี้: git clone git@gist.github.com:123456.git


OP ไม่ได้ถามเกี่ยวกับโคลน แต่เกี่ยวกับการผลักดัน
Owen Blacker

1
ผู้ปฏิบัติการถามเกี่ยวกับการสื่อสารกับ GitHub ทำไมฉันตอบด้วยคำตอบเกี่ยวกับส่วนสำคัญที่ฉันไม่มีความคิด
Jean Jordaan

ฮะยุติธรรมพอ :)
Owen Blacker

0

กำลังเผชิญปัญหาเดียวกัน ในกรณีของฉันมันเป็นรุ่น GIT ที่ไม่สามารถใช้งานร่วมกับผู้ใช้หลายคนที่กำลังเข้าถึงโครงการเดียวกัน (ดึง / ดัน)

เพิ่งอัพเดตรุ่น GIT และอัปเดตพา ธ ในการตั้งค่าสตูดิโอ Android และใช้งานได้ดีสำหรับฉัน

แก้ไข -

Git สำหรับ Windows (1.9.5) มีปัญหาการอัพเดตแบบเดียวกันอาจช่วยได้


0

พบปัญหาเดียวกัน แต่ได้รับการแก้ไขโดยการล้างที่เก็บ git (ล้างไฟล์ที่ไม่ได้ติดตามโดยใช้ "git clean")


1
เมื่อฉันทำความสะอาดคอมไพล์มันแสดงให้เห็นข้อผิดพลาดนี้: ร้ายแรง: clean.requireForce เริ่มต้นที่จะเป็นจริงและไม่ใช่ -i, -n หรือ -f ที่ได้รับ; ปฏิเสธที่จะทำความสะอาด
Chandni

สำหรับ @Chandni และใครก็ตามที่เผชิญกับข้อความแสดงข้อผิดพลาด git ช่วยให้คุณลองทำgit clean -iเช่นนั้นเพื่อเริ่มในโหมดโต้ตอบ
seethrough

@seethrough - ขอบคุณ
Chandni

0

ต้องเปลี่ยน URL ระยะไกลเป็นsshหรือ https

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

หรือ

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

หวังว่าจะช่วย :)


0

เมื่อฉันใช้ URL url เพื่อผลักดันไปยังต้นแบบระยะไกลฉันพบ proble เดียวกันฉันเปลี่ยนเป็นที่อยู่ SSH และทุกอย่างกลับมาทำงานได้อย่างไม่มีที่ติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.