Errore push Github: errore RPC; risultato = 22, codice HTTP = 413


129

stupido problema con Github in corso proprio ora. Ho una discreta quantità di modifiche (~ 120 MB di dimensione), quando provo a spingere, ecco cosa succede:

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

L'ho già fatto

git config http.postBuffer 524288000, quindi questo non sembra essere il problema. Cosa potrebbe essere?


3
Per i futuri visitatori, se stai ricevendo HTTP code = 0, GitHub non funziona, come ieri.
StackExchange Utente

3
Ho avuto HTTP code = 0quando il mio proxy stava bloccando. Il mio proxy http funziona con github, ma https non funziona per il mio proxy aziendale. Penso che il mio proxy HTTPS imponga NTLM, mentre HTTP accetta BASIC. Ho cambiato l'URL di origine del repository da https a http e ha funzionato per me. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes,

Risposte:


206

Se viene visualizzato l'errore 413, il problema non riguarda git ma il tuo server web . È il tuo server web che sta bloccando i file di upload di grandi dimensioni.

Soluzione per nginx

Basta caricare il tuo nginx.confe aggiungere client_max_body_size 50m;(modificando il valore in base alle proprie esigenze) nel blocco http.

Ricarica nginx per accettare la nuova configurazione eseguendo sudo service nginx reloade riprova a inviare il commit su http.

Soluzione per Apache

Nel tuo httpd.confadd LimitRequestBody 52428800(modificando il valore in base alle tue esigenze) all'interno di un <Directory />blocco. In questo modo è possibile limitare la richiesta dell'intero filesystem del server, solo un singolo host virtuale o una directory.

Spero che aiuti.


1
50m non erano abbastanza per me, ma questo ha risolto il mio problema! Grazie!
Kevin C. Krinke,

Ho dovuto farlo anche su un proxy nginx intermedio.
jperelli,

2
Cosa succede se non si utilizza Nginx?
Katianie,

qualche soluzione per l'installazione di omnibus gitlab ..? ultima versione 12.1
shashwat,

Dopo molte ricerche, imprecazioni e pianti. (in quell'ordine) ho scoperto che il file di configurazione incorporato si trovava in: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk

55

L'avevo capito!!! Certo che lo farei subito dopo aver colpito post!

Avevo impostato il repository per utilizzare l'URL HTTPS, l'ho cambiato nell'indirizzo SSH e tutto ha ripreso a funzionare perfettamente.


51
Non è questo il motivo del problema. Questa è solo una soluzione alternativa. Voglio sapere perché non funziona su HTTPS.
Steve Walsh,

4
Per me ssh non è un'opzione. Quindi, nel caso in cui ti trovi nella stessa situazione @ZincX, vedi la mia risposta sopra.
Tinou,

2
Questa è solo una soluzione. La risposta di Tinou dovrebbe essere la risposta accettata.
Ben

1
come l'hai cambiato?
Dainius Kreivys,

Molte persone probabilmente non hanno accesso al proprio server Web, quindi questa informazione è molto apprezzata!
Matthew,

38

il comando per cambiare l'URL remoto (da https -> git @ ...) è qualcosa del genere

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

origin qui è il nome del mio telecomando (fai git remote e quello che viene fuori è la tua origine).


2
In caso di bitbucket (pulsante 'Clone') ho avuto un problema quando rimosso ssh://da ssh://git@<bitbucket-repo>:<port>/dir/to/project.gitQuindi state attenti, ragazzi!
fightlight

9

Ho avuto lo stesso problema ma stavo usando un proxy inverso.

Quindi ho dovuto impostare

client_max_body_size 50m; 

all'interno di entrambi i file di configurazione:

  • sul server web nginx di gitlab (come detto nelle risposte precedenti)
  • ma anche sul proxy inverso nginx ospitato sul server dedicato.

qualche soluzione per l'installazione di omnibus gitlab ..?
Shashwat,

forse dai un'occhiata a omnibus / nginx conf: gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/…
grimabe

Volevo ringraziarti per questa soluzione, avevo esattamente questa configurazione.
tjeerdnet,

6

Avevo già "HTTPS //" nell'URL git ma ho riscontrato questo errore.

Tutto quello che ho fatto è stato aggiungere l'opzione -u con push e ha funzionato.

git push -u origin master


4

Per coloro che usano IIS 7 per ospitare un git http/ httpsendpoint:

Devi aumentare il tuo uploadReadAheadSize.

Avviare Gestione Internet Information Services (IIS)

  1. Espandi il campo Server

  2. Espandi siti

  3. Seleziona il sito per cui desideri apportare la modifica.

  4. Nella sezione Funzionalità, fai doppio clic Configuration Editor

  5. Sotto Sectionselezionare:system.webServer > serverRuntime

  6. Modifica la uploadReadAheadSizesezione (il valore deve essere compreso tra 0e 2147483647.)

  7. Clic Apply

  8. Riavvia il sito Web


Per riavviare il sito Web ho selezionato Sito Web predefinito e sul lato destro, sotto Azioni sono presenti i pulsanti Stop e Start .
jgoeders,

Questa correzione era ancora richiesta in IIS 10.
jgoeders

2

Se stai affrontando questo problema mentre stai spingendo le modifiche di grandi dimensioni, esegui sotto il comando nel terminale.

git config --global http.postBuffer 157286400

Vedi questo per maggiori dettagli.


1

L'errore si verifica in "libcurl", che è il protocollo sottostante per il caricamento https. La soluzione è in qualche modo aggiornare libcurl. Per ottenere maggiori dettagli sull'errore, impostare GIT_CURL_VERBOSE = 1

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

Significato dell'errore, secondo il documento libcurl: CURLE_HTTP_RETURNED_ERROR (22)

Viene restituito se CURLOPT_FAILONERROR è impostato su TRUE e il server HTTP restituisce un codice di errore> = 400.

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


1

Ho riscontrato questo problema quando provo a clonare un repository git in una macchina Linux.

il seguente URL funziona per me in Windows

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

mentre il seguente URL funziona su una macchina Linux e ha https nell'URL

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

1

Ho avuto questo errore ( errore: RPC non riuscito; risultato = 22, codice HTTP = 413 ) quando ho provato a trasferire il mio commit iniziale in un nuovo repository BitBucket. L'errore si è verificato per me perché il repository BitBucket non aveva un ramo master . Se stai usando SourceTree puoi creare un ramo principale sull'origine premendo il pulsante Git Flow .


1

Usi i collegamenti https anziché i collegamenti ssh? Poiché il collegamento https è limitato dalle dimensioni del caricamento di HttpServer (come Apache, Ngnix), non si applicano tali restrizioni quando si utilizza ssh.

Utilizzare il metodo seguente per passare al collegamento ssh.

  1. Terminale aperto
  2. Passa alla directory di lavoro del tuo progetto.
  3. Ottieni il nome del repository remoto
$ git remote -v
origin  https://github.com/[user_name]/[project_name].git (fetch)
origin  https://github.com/[user_name]/[project_name].git (push)
  1. Modifica l'indirizzo git in collegamento ssh.
git remote set-url origin git@github.com:[user_name]/[project_name].git

Se si determina il nome del repository remoto, passare direttamente al punto 4. Ora è possibile eseguire correttamente l'operazione push.



0

https clone of gists fall (ssh funziona, vedi sotto):

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

Questo funziona: git clone git@gist.github.com:123456.git


L'OP non ha chiesto informazioni sul clone, ma sulla spinta.
Owen Blacker,

1
Bene, l'OP ha chiesto informazioni sulla comunicazione con Github. Perché io abbia risposto con una risposta sulle parole chiave non ho idea però.
Jean Jordaan,

Ah, abbastanza giusto :)
Owen Blacker il

0

Stava affrontando lo stesso problema. Nel mio caso erano versioni GIT non compatibili tra più utenti che accedevano (pull / push) allo stesso progetto.

ho appena aggiornato la versione GIT e aggiornato il percorso sulle impostazioni dello studio Android e funziona bene per me.

Modificare -

Git per Windows (1.9.5) ha qualche problema, l'aggiornamento dello stesso può aiutare.


0

Stava affrontando lo stesso problema, tuttavia è stato risolto ripulendo il repository git (Pulisci i file non monitorati utilizzando "git clean").


1
quando eseguo git clean viene visualizzato questo errore: fatal: clean.requireForce viene impostato su true e non viene fornito né -i, -n, né -f; rifiutando di pulire
Chandni,

per @Chandni e chiunque si trovi ad affrontare lo stesso messaggio di errore git ti aiuta da solo, prova git clean -iad esempio ad avviare in modalità interattiva.
seethrough

@seethrough - Grazie
Chandni,

0

È necessario modificare l'URL remoto in ssh o https

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

o

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

Spero che questo possa aiutare :)


0

quando ho usato l'URL HTTPS per inviare al master remoto, ho riscontrato lo stesso problema, l'ho cambiato nell'indirizzo SSH e tutto ha ripreso a funzionare perfettamente.

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.