Git Push schlägt fehl: RPC fehlgeschlagen; Ergebnis = 22, HTTP-Code = 411

127

Ich habe nur einen Zweig. Seit ein paar Monaten benutze ich

git push origin master

in mein lokales Repository zu verpflichten. Letzte Nacht, nachdem ich einige geringfügige Änderungen an meinem lokalen Repository vorgenommen und versucht habe, mit demselben Befehl zu pushen, wurde folgende Fehlermeldung angezeigt:

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

Ich habe gegoogelt und Fragen wie diese und diese gefunden , aber keine der Antworten auf diese Fragen löst mein Problem.

Die meisten Antworten deuten auf das Problem des abgetrennten Kopfes hin . Trotzdem glaube ich nicht, dass mein Kopf losgelöst ist. Ich glaube auch nicht, dass ich auf dem falschen Zweig bin (da ich nur einen Zweig habe ...)

Ich habe ein paar Experimente durchgeführt, um herauszufinden, was falsch ist, und hier sind die Ergebnisse, die ich erhalten habe:

(1) Zuerst kommt meine git statusAusgabe

# 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) Wenn ich tippe git reflog, kann ich alle meine lokalen Commits sehen, aber das Remote-Repository wird einfach nicht aktualisiert.

(3) Wenn ich tippe git branch -a, bekomme ich

* master
  remotes/origin/master

(4) Wenn ich tippe git remote show origin, bekomme ich

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

Ich denke, die letzte Ausgabezeile (die "Schnellvorlauf") ist komisch, aber ich bin mir nicht sicher, was falsch ist ...

Zening Qu
quelle
fast-forwardablebedeutet, dass Sie Ihre lokalen Änderungen auf die Remote-Niederlassung übertragen können, nichts Kriminelles :-)
Maksym Polshcha

Antworten:

292

Wenn Sie versuchen, eine große Anzahl von Änderungen mit HTTP oder HTTPS in ein Git-Repository zu übertragen, wird möglicherweise eine Fehlermeldung angezeigt, z RPC failed; result=22, HTTP code = 411. Dies wird durch einen Git-Konfigurationsstandard verursacht, der bestimmte HTTP-Vorgänge auf 1 Megabyte beschränkt.

Um dieses Limit zu ändern, führen Sie es in Ihrem lokalen Repository aus

git config http.postBuffer *bytes*

Dabei ist Bytes die maximal zulässige Anzahl von Bytes. Beispielsweise:

git config http.postBuffer 524288000

Für 500 MB (danke @Hengjie)

Maksym Polshcha
quelle
52
Ein Beispiel ist git config http.postBuffer 524288000für 500 MB.
Hengjie
9
Wenn Sie gitlab verwenden, müssen Sie möglicherweise auch Ihre nginx-Konfiguration ändern ( /etc/nginx/sites-available/gitlab). Weitere Informationen: github.com/gitlabhq/gitlabhq/issues/3099
DanielB
Was ist, wenn es zeigt RPC failed; result=22, HTTP code = 502?
Dipesh Raichana
2
Ich erhalte immer noch den folgenden Fehler git: RPC fehlgeschlagen; Ergebnis = 22, HTTP-Code = 504 in Bitbucket auf Android Studio
DJtiwari
23

Sie können dies auch global tun -

git config --global http.postBuffer 524288000

Dadurch können alle lokalen Repos bis zu 500 MB Daten übertragen.

jdr0dn3y
quelle
3

Keine der angebotenen Lösungen hat bei uns funktioniert. Wir mussten zu wechseln, sshdamit dies anstelle der HTTPSLösung funktioniert .

Javaautorität
quelle
2

Wenn Sie TortoiseGit für Windows verwenden, verwenden Sie am einfachsten die integrierte Konfiguration.

Wählen Sie in einem Datei-Explorer mit der linken Maustaste TortoiseGit -> Einstellungen . Akzeptieren Sie die Info-Nachricht. Jetzt können Sie auswählen, ob Sie die Eigenschaft nur für das aktuelle Projekt oder das gesamte System konfigurieren möchten. Für eine systemweite Konfiguration klicken Sie auf "systemweite gitconfig bearbeiten" und fügen Sie die nächste Zeile zum Abschnitt hinzu [http]:

postBuffer = 524288000

(Wenn der Abschnitt [http]nicht existiert, erstellen Sie ihn)

Errepunto
quelle
1

Ich habe den 22 Fehler wie folgt gelöst: Im Befehl "git clone" habe ich NICHT das user: password angegeben. Der Klon hat funktioniert, aber nicht der Push. Lösung für den 22 Fehler: Ändern Sie die URL .git / config wie folgt: url = http: // user: pwd @ host / ... Dann funktionierte der Push.

Rob Lassche
quelle