git push non riesce: RPC fallito; risultato = 22, codice HTTP = 411


127

Ho un solo ramo. Per alcuni mesi ho usato

git push origin master

per impegnarmi nel mio repository locale. Ieri sera dopo aver apportato alcune piccole modifiche al mio repository locale e aver tentato di eseguire il push usando lo stesso comando, ho ricevuto questo errore:

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

Ho cercato su Google e ho trovato domande come questa e questa , ma nessuna delle risposte a queste domande risolve il mio problema.

La maggior parte delle risposte suggerisce il problema della testa staccata . Eppure non penso che la mia testa sia distaccata. Né penso di essere sul ramo sbagliato (dato che ho solo un ramo ...)

Ho fatto alcuni esperimenti per capire cosa non va, e qui ci sono i risultati che ho ottenuto:

(1) Prima arriva la mia git statususcita

# 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) Quando scrivo git reflog, posso vedere tutti i miei commit locali, ma il repository remoto non verrà aggiornato.

(3) Quando scrivo git branch -a, ottengo

* master
  remotes/origin/master

(4) Quando scrivo git remote show origin, ottengo

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

Penso che l'ultima linea di output (il "forward veloce") sia strana, ma non sono sicuro di cosa sia sbagliato ...


fast-forwardablesignifica che puoi inviare le tue modifiche locali alla filiale remota, niente di criminale :-)
Maksym Polshcha,

Risposte:


292

Se si tenta di spingere un grande insieme di modifiche a un repository Git con HTTP o HTTPS, è possibile ottenere un messaggio di errore come errore: RPC failed; result=22, HTTP code = 411. Ciò è causato da una configurazione predefinita di Git che limita alcune operazioni HTTP a 1 megabyte.

Per modificare questo limite, esegui nel tuo repository locale

git config http.postBuffer *bytes*

dove byte è il numero massimo di byte consentiti. Per esempio:

git config http.postBuffer 524288000

Per 500 MB (grazie a @Hengjie)


52
Un esempio è git config http.postBuffer 524288000per 500 MB.
Hengjie,

9
Se stai usando gitlab, potresti dover cambiare anche la tua configurazione di nginx ( /etc/nginx/sites-available/gitlab). Maggiori informazioni: github.com/gitlabhq/gitlabhq/issues/3099
DanielB

cosa succede se mostra RPC failed; result=22, HTTP code = 502?
Dipesh Raichana,

2
Ricevo ancora il seguente errore git: RPC fallito; risultato = 22, codice HTTP = 504 in bitbucket su Android Studio
DJtiwari,

23

Puoi anche farlo a livello globale -

git config --global http.postBuffer 524288000

Ciò consentirà a tutti i repository locali di inviare fino a 500 MB di dati.


3

Nessuna delle soluzioni fornite ha funzionato per noi. Abbiamo dovuto passare a sshper far funzionare questo invece della HTTPSsoluzione.


2

Se stai usando TortoiseGit per Windows, il modo più semplice è usare la configurazione integrata.

In un esploratore di file premi il pulsante sinistro del mouse, seleziona TortoiseGit -> Impostazioni . Accetta il messaggio informativo. Ora, puoi scegliere se vuoi configurare la proprietà solo per il progetto corrente o il sistema. Per la configurazione a livello di sistema, premere "modifica gitconfig a livello di sistema" e aggiungere la riga successiva alla sezione [http]:

postBuffer = 524288000

(se la sezione [http]non esiste, creala)


1

Ho risolto l'errore 22 nel modo seguente: Nel comando "git clone" NON ho fornito l'utente: password. Il clone ha funzionato, ma non la spinta. Soluzione per l'errore 22: modifica .git / config l'URL in questo modo: url = http: // utente: pwd @ host / ... Quindi, il push ha funzionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.