2012-09-29 6 views
108

Ich habe nur einen Zweig. Seit ein paar Monaten verwende ichgit push schlägt fehl: RPC ist fehlgeschlagen; Ergebnis = 22, HTTP-Code = 411

git push origin master 

zu meinem lokalen Repository Commit. Letzte Nacht, nachdem ich ein paar kleineren Änderungen an meinem lokalen Repository gemacht und versuchte, mit dem gleichen Befehl zu drücken, habe ich diesen Fehler:

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 gegoogelt und gefundene Fragen wie this one und this one, aber keine der Antworten auf Diese Fragen lösen mein Problem.

Die meisten Antworten schlagen das Problem von abgetrennten Kopf vor. Aber ich glaube nicht, dass mein Kopf losgelöst ist. Ich glaube auch nicht ich auf dem falschen Zweig bin (da ich nur eine Niederlassung haben ...)

ich ein paar Experimente haben, um herauszufinden, was falsch ist, und hier sind die Ergebnisse, die ich habe:

(1) Zuerst kommt mein git status Ausgang

# 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 git reflog geben, ich werde nicht aktualisiert werden nur alle meine lokalen Commits, aber das Remote-Repository sehen.

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

* master 
    remotes/origin/master 

(4) Wenn ich git remote show origin geben, 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 Zeile der Ausgabe (der „schnell- Weiterleiten ") ist seltsam, aber ich bin mir nicht sicher, was ist falsch ...

+0

'Fast-forwardable' bedeutet, dass Sie Ihre lokalen Änderungen auf die Remote-Zweigstelle schieben können, nichts Verbrecher :-) –

Antwort

246

Wenn Sie versuchen, eine große Reihe von Änderungen an ein Git-Repository mit HTTP oder HTTPS zu schieben, erhalten Sie möglicherweise eine Fehlermeldung wie als Fehler: RPC failed; result=22, HTTP code = 411. Dies wird durch eine Standardkonfiguration für Git verursacht, die bestimmte HTTP-Vorgänge auf 1 Megabyte begrenzt.

Um diese Grenze in Ihrem lokalen Repository

git config http.postBuffer *bytes* 

laufen zu ändern, wo zulässig ist die maximale Anzahl von Bytes Bytes. Für exmaple:

git config http.postBuffer 524288000 

für 500MB (dank @Hengjie)

+1

korrekt! Vielen Dank! – CherryQu

+50

Ein Beispiel ist 'git config http.postBuffer 524288000' für 500MB. – Hengjie

+9

Wenn Sie gitlab verwenden, müssen Sie möglicherweise auch Ihre nginx-Konfiguration ändern ('/ etc/nginx/sites-available/gitlab'). Weitere Informationen: https://github.com/gitlabhq/gitlabhq/issues/3099 – DanielB

22

Sie auch diese global tun können -

git config --global http.postBuffer 524288000 

, dass alle lokalen repos zu 500 MB Daten treiben können.

2

Wenn Sie TortoiseGit für Windows verwenden, verwenden Sie am einfachsten die integrierte Konfiguration. In einem Dateiexplorer drücken Sie die linke Maustaste und wählen TortoiseGit -> Einstellungen Akzeptieren Sie die Info-Nachricht. Jetzt können Sie wählen, ob Sie die Eigenschaft nur für das aktuelle Projekt oder System Whide konfigurieren möchten.Für systemweite Konfigurations Presse „bearbeiten system gitconfig“ und fügen Sie die nächste Zeile zu dem Abschnitt [http]:

postBuffer = 524288000 

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

2

Keine der angebotenen Lösungen gearbeitet uns. Wir mussten zu ssh wechseln, um diese Arbeit anstelle der HTTPS Lösung zu machen.

0

Ich löste den 22 Fehler wie folgt: In der "Git Klon" -Befehl habe ich nicht den Benutzer: Passwort. Der Klon funktioniert, aber nicht der Push. Lösung für den 22 Fehler: Ändern Sie .git/Config die URL wie folgt: url = http://user:[email protected]/ ... Dann arbeitete der Push.

Verwandte Themen