Github-Push-Fehler: RPC fehlgeschlagen; Ergebnis = 22, HTTP-Code = 413


129

dummes Problem mit Github, das gerade läuft. Ich habe eine anständige Anzahl von Änderungen (~ 120 MB groß). Wenn ich versuche zu pushen, passiert Folgendes:

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

Ich bin bereits fertig

git config http.postBuffer 524288000Das scheint also nicht das Problem zu sein. Was könnte es sein?


3
Für zukünftige Besucher ist HTTP code = 0GitHub wie gestern ausgefallen.
StackExchange User

3
Ich bekam, HTTP code = 0als mein Proxy blockierte. Mein http-Proxy funktioniert mit github, das https jedoch nicht für meinen Unternehmens-Proxy. Ich denke, mein HTTPS-Proxy erzwingt NTLM, während das HTTP BASIC akzeptiert. Ich habe die Repo-Ursprungs-URL von https in http geändert und es hat bei mir funktioniert. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

Antworten:


206

Wenn Sie den Fehler 413 erhalten, liegt das Problem nicht bei git, sondern bei Ihrem Webserver . Es ist Ihr Webserver, der große Upload-Dateien blockiert.

Lösung für Nginx

Laden Sie einfach Ihren nginx.confund fügen client_max_body_size 50m;Sie ihn im http-Block hinzu (indem Sie den Wert an Ihre Bedürfnisse anpassen).

Laden Sie nginx neu, um die neue Konfiguration durch Ausführen zu akzeptieren, sudo service nginx reloadund versuchen Sie erneut, Ihr Commit über http zu übertragen.

Lösung für Apache

In Ihrem httpd.confAdd LimitRequestBody 52428800(Ändern des Werts nach Ihren Wünschen) innerhalb eines <Directory />Blocks. Auf diese Weise können Sie die Anforderung des gesamten Server-Dateisystems, nur eines einzelnen virtuellen Hosts oder eines Verzeichnisses, begrenzen.

Ich hoffe das hilft.


1
50m waren nicht genug für mich, aber das hat mein Problem gelöst! Vielen Dank!
Kevin C. Krinke

Ich musste das auch auf einem Zwischen-Nginx-Proxy machen.
Jperelli

2
Was ist, wenn Sie Nginx nicht verwenden?
Katianie

Irgendeine Lösung für die Installation von Gitlab Omnibus ..? neueste Version 12.1
Shashwat

Nach langem Suchen, Fluchen und Weinen. (in dieser Reihenfolge) Ich fand, dass sich die eingebettete
Konfigurationsdatei unter

56

Ich habe es herausgefunden!!! Natürlich würde ich gleich nach dem Post!

Ich hatte das Repo so eingestellt, dass es die HTTPS-URL verwendet, ich änderte es in die SSH-Adresse und alles funktionierte wieder einwandfrei.


51
Das ist nicht der Grund für das Problem. Das ist nur eine Problemumgehung. Ich möchte wissen, warum es auf https fehlschlägt.
Steve Walsh

4
Für mich ist SSH keine Option. Wenn Sie sich also in der gleichen Situation wie @ZincX befinden, lesen Sie meine Antwort oben.
Tinou

2
Dies ist nur eine Umgehung. Tinous Antwort sollte die akzeptierte Antwort sein.
Ben

1
Wie hast du das geändert?
Dainius Kreivys

Viele Menschen haben wahrscheinlich keinen Zugriff auf ihren Webserver, daher werden diese Informationen sehr geschätzt!
Matthew

38

Der Befehl zum Ändern der Remote-URL (von https -> git @ ...) lautet ungefähr so

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

Ursprung hier ist der Name meiner Fernbedienung (do git remote und was dabei herauskommt, ist dein Ursprung).


2
Im Falle von Bitbucket ('Clone'-Button) hatte ich ein Problem beim Entfernen ssh://von ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitAlso sei vorsichtig, Leute!
Kampflicht

9

Ich hatte das gleiche Problem, aber ich verwendete einen Reverse-Proxy.

Also musste ich einstellen

client_max_body_size 50m; 

in beiden Konfigurationsdateien:

  • auf dem gitlab nginx Webserver (wie in den vorherigen Antworten angegeben)
  • aber auch auf dem auf dem dedizierten Server gehosteten Nginx-Reverse-Proxy.

Irgendeine Lösung für die Installation von Gitlab Omnibus ..?
Shashwat

Vielleicht werfen Sie einen Blick auf Omnibus / Nginx Conf: gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/…
Grimabe

Ich wollte mich bei Ihnen für diese Lösung bedanken und hatte genau dieses Setup.
Tjeerdnet

6

Ich hatte bereits "HTTPS //" in der Git-URL und war dennoch mit diesem Fehler konfrontiert.

Alles was ich getan habe war Option -u mit Push hinzuzufügen und es hat funktioniert.

git push -u origin master


4

Für diejenigen, die IIS 7 zum Hosten eines Git http/ httpsEndpunkts verwenden:

Sie müssen Ihre erhöhen uploadReadAheadSize.

Starten Sie den IIS-Manager (Internet Information Services)

  1. Erweitern Sie das Feld Server

  2. Erweitern Sie Sites

  3. Wählen Sie die Site aus, für die Sie die Änderung vornehmen möchten.

  4. Doppelklicken Sie im Abschnitt Funktionen Configuration Editor

  5. Unter SectionWählen Sie:system.webServer > serverRuntime

  6. Ändern Sie den uploadReadAheadSizeAbschnitt (Der Wert muss zwischen 0und liegen 2147483647.)

  7. Klicken Apply

  8. Starten Sie die Website neu


Um die Website neu zu starten, habe ich Standardwebsite ausgewählt. Auf der rechten Seite befinden sich unter Aktionen die Schaltflächen Stopp und Start .
Jgoeders

Dieser Fix war in IIS 10 noch erforderlich.
jgoeders

2

Wenn Sie auf dieses Problem stoßen, während Sie Änderungen in großer Größe vornehmen, führen Sie den folgenden Befehl im Terminal aus.

git config --global http.postBuffer 157286400

Sehen Sie dies für weitere Details.


1

Der Fehler tritt in 'libcurl' auf, dem zugrunde liegenden Protokoll für den https-Upload. Die Lösung besteht darin, libcurl irgendwie zu aktualisieren. Um weitere Details zum Fehler zu erhalten, setzen Sie GIT_CURL_VERBOSE = 1

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

Bedeutung des Fehlers gemäß libcurl doc: CURLE_HTTP_RETURNED_ERROR (22)

Dies wird zurückgegeben, wenn CURLOPT_FAILONERROR auf TRUE gesetzt ist und der HTTP-Server einen Fehlercode zurückgibt, der> = 400 ist.

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


1

Ich habe dieses Problem, wenn ich versuche, ein Git-Repo auf einem Linux-Computer zu klonen.

Die folgende URL funktioniert für mich in Windows

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

Die folgende URL funktioniert auf einem Linux-Computer und enthält https in der URL

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

1

Ich hatte diesen Fehler ( Fehler: RPC fehlgeschlagen; Ergebnis = 22, HTTP-Code = 413 ), als ich versuchte, mein anfängliches Commit in ein neues BitBucket-Repository zu verschieben. Der Fehler trat bei mir auf, weil das BitBucket-Repo keinen Hauptzweig hatte. Wenn Sie SourceTree verwenden , können Sie einen Master-Zweig am Ursprung erstellen , indem Sie auf die Schaltfläche Git Flow klicken .


1

Verwenden Sie https-Links anstelle von SSH-Links? Da der https-Link durch die Größe des Uploads von HttpServer (wie Apache, Ngnix) begrenzt ist, gibt es bei Verwendung von ssh keine solche Einschränkung.

Verwenden Sie die folgende Methode, um zum SSH-Link zu wechseln.

  1. Terminal öffnen.
  2. Wechseln Sie in das Arbeitsverzeichnis Ihres Projekts.
  3. Rufen Sie den Namen des Remote-Repositorys ab
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. Ändern Sie die Git-Adresse in SSH-Link.
git remote set-url origin git@github.com:[user_name]/[project_name].git

Wenn Sie den Namen des Remote-Repositorys ermitteln, fahren Sie direkt mit Schritt 4 fort. Jetzt können Sie den Push-Vorgang problemlos ausführen.



0

https-Klon von Gists schlägt fehl (ssh funktioniert, siehe unten):

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

Das funktioniert: git clone git@gist.github.com:123456.git


Das OP fragte nicht nach Klonen, sondern nach Push.
Owen Blacker

1
Nun, das OP fragte nach der Kommunikation mit Github. Warum ich mit einer Antwort über das Wesentliche geantwortet habe, weiß ich allerdings nicht.
Jean Jordaan

Hah, fair genug :)
Owen Blacker

0

War vor dem gleichen Problem. In meinem Fall waren es nicht kompatible GIT-Versionen für mehrere Benutzer, die auf dasselbe Projekt zugreifen (Pull / Push).

Ich habe gerade die GIT-Version aktualisiert und den Pfad für die Android Studio-Einstellungen aktualisiert.

Bearbeiten -

Git für Windows (1.9.5) hat ein Problem, das Aktualisieren kann hilfreich sein.


0

Es gab das gleiche Problem, das jedoch durch Bereinigen des Git-Repositorys behoben wurde (Bereinigen Sie nicht verfolgte Dateien mit "git clean").


1
Wenn ich git clean mache, wird der folgende Fehler angezeigt: fatal: clean.requireForce ist standardmäßig true und weder -i, -n noch -f angegeben. weigert sich zu reinigen
Chandni

Versuchen Sie für @Chandni und alle, die mit der gleichen Fehlermeldung git konfrontiert sind, sich selbst zu helfen, git clean -ibeispielsweise im interaktiven Modus zu starten.
Durchsicht

@seethrough - Danke
Chandni

0

Die Remote-URL muss in ssh oder https geändert werden

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

oder

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

Hoffe das wird helfen :)


0

Als ich die https-URL zum Senden an den Remote-Master verwendete, traf ich auf dasselbe Problem, änderte es in die SSH-Adresse und alles funktionierte wieder einwandfrei.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.