Error de empuje de Github: error de RPC; resultado = 22, código HTTP = 413

129

Estúpido problema con Github en este momento. Tengo una cantidad decente de cambios (~ 120 MB de tamaño), cuando intento presionar, esto es lo que sucede:

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

Ya lo hice

git config http.postBuffer 524288000, así que ese no parece ser el problema. ¿Qué podría ser?

Astucia
fuente
3
Para los futuros visitantes, si está recibiendo HTTP code = 0, GitHub está caído, como ayer.
Usuario de StackExchange del
3
Obtuve HTTP code = 0cuando mi proxy estaba bloqueando. Mi proxy http funciona con github, pero el https no es para mi proxy corporativo. Creo que mi proxy HTTPS fuerza NTLM, mientras que HTTP acepta BASIC. Cambié la URL de origen del repositorio de https a http y funcionó para mí. git remote set-url origin http://github.com/GitUserName/GitRepoName.git
Motes

Respuestas:

206

Si obtiene el error 413, el problema no está en git sino en su servidor web . Es su servidor web el que está bloqueando grandes archivos de carga.

Solución para nginx

Simplemente cargue su nginx.confy agregue client_max_body_size 50m;(cambiando el valor a sus necesidades) en el bloque http.

Vuelva a cargar nginx para aceptar la nueva configuración ejecutando sudo service nginx reload e intente nuevamente empujar su confirmación sobre http.

Solución para Apache

En su httpd.confcomplemento LimitRequestBody 52428800(cambiando el valor a sus necesidades) dentro de un <Directory />bloque. Al hacer esto, puede limitar la solicitud de todo el sistema de archivos del servidor, solo un host virtual o un directorio.

Espero que esto ayude.

Tinou
fuente
1
¡50m no fueron suficientes para mí, pero esto resolvió mi problema! ¡Gracias!
Kevin C. Krinke
Tuve que hacer eso también en un proxy intermedio nginx.
jperelli
2
¿Qué pasa si no estás usando Nginx?
Katianie
¿Alguna solución para la instalación de gitlab omnibus ..? última versión 12.1
shashwat
Después de mucho buscar, maldecir y llorar. (en ese orden) descubrí que el archivo de configuración incrustado se encontraba en: /var/opt/gitlab/nginx/conf/gitlab-http.conf
kroolk
55

¡¡¡Me lo imaginé!!! ¡Por supuesto que lo haría justo después de llegar a la publicación!

Tenía el repositorio configurado para usar la URL HTTPS, lo cambié a la dirección SSH y todo volvió a funcionar sin problemas.

Astucia
fuente
51
Esa no es la razón del problema. Eso es solo una solución. Quiero saber por qué falla en https.
Steve Walsh
44
Para mí, ssh no es una opción. Entonces, en caso de que se encuentre en la misma situación @ZincX, vea mi respuesta más arriba.
Tinou
2
Esto es solo una solución. La respuesta de Tinou debería ser la respuesta aceptada.
Ben
1
como cambiaste eso
Dainius Kreivys
Muchas personas probablemente no tienen acceso a su servidor web, por lo que esta información es muy apreciada.
Matthew el
38

El comando para cambiar la URL remota (de https -> git @ ...) es algo como esto

git remote set-url origin [email protected]:GitUserName/GitRepoName.git

origen aquí es el nombre de mi control remoto (git remoto y lo que sale es su origen).

kay am see
fuente
2
En caso de bitbucket ( 'Clon' botón) que tenía un problema cuando se retiran ssh://de ssh://git@<bitbucket-repo>:<port>/dir/to/project.gittan cuidado, chicos!
Fightlight
9

Tuve el mismo problema pero estaba usando un proxy inverso.

Así que tuve que configurar

client_max_body_size 50m; 

dentro de ambos archivos de configuración:

  • en el servidor web gitlab nginx (como se dijo en las respuestas anteriores)
  • pero también en el proxy inverso nginx alojado en el servidor dedicado.
grimabe
fuente
¿Alguna solución para la instalación de gitlab omnibus ..?
shashwat
tal vez eche un vistazo a omnibus / nginx conf: gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/…
grimabe
Quería agradecerle por esta solución, tenía exactamente esta configuración.
tjeerdnet
6

Ya tenía "HTTPS //" en la URL de git, pero me enfrenté a este error.

Todo lo que hice fue agregar la opción -u con push y funcionó.

git push -u origin master

Jayzcode
fuente
4

Para aquellos que usan IIS 7 para alojar un git http/https punto final:

Necesitas aumentar tu uploadReadAheadSize .

Inicie el Administrador de Internet Information Services (IIS)

  1. Expanda el campo Servidor

  2. Expandir sitios

  3. Seleccione el sitio para el que desea realizar la modificación.

  4. En la sección Características, haga doble clic. Configuration Editor

  5. Debajo de Sectionseleccionar:system.webServer > serverRuntime

  6. Modifique la uploadReadAheadSizesección (el valor debe estar entre 0y 2147483647.)

  7. Hacer clic Apply

  8. Reiniciar el sitio web

Markus Mauch
fuente
Para reiniciar el sitio web, seleccioné Sitio web predeterminado y en el lado derecho, debajo de Acciones, hay botones de Detener e Inicio .
jgoeders
Esta solución todavía era necesaria en IIS 10.
jgoeders
2

Si se enfrenta a este problema mientras presiona cambios de gran tamaño, ejecute el siguiente comando en la terminal.

git config --global http.postBuffer 157286400

Vea esto para más detalles.

vittal
fuente
1

El error ocurre en 'libcurl', que es el protocolo subyacente para la carga https. La solución es actualizar libcurl de alguna manera. Para obtener más detalles sobre el error, configure GIT_CURL_VERBOSE = 1

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

Significado del error, según libcurl doc: CURLE_HTTP_RETURNED_ERROR (22)

Esto se devuelve si CURLOPT_FAILONERROR se establece como VERDADERO y el servidor HTTP devuelve un código de error que es> = 400.

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

FractalSpace
fuente
1

Tengo este problema cuando intento clonar un repositorio git en una máquina Linux.

la siguiente URL me funciona en windows

http://[email protected]/scm/project/swamy-main.git

mientras que la siguiente URL funciona en una máquina Linux y tiene https en la URL

https://[email protected]/scm/project/swamy-main.git
Swamy
fuente
1

Tuve este error ( error: RPC falló; resultado = 22, código HTTP = 413 ) cuando intenté enviar mi confirmación inicial a un nuevo repositorio de BitBucket. El error ocurrió porque el repositorio de BitBucket no tenía una rama maestra . Si está utilizando SourceTree , puede crear una rama maestra en el origen presionando el botón Git Flow .

Ben
fuente
1

¿Utiliza enlaces https en lugar de enlaces ssh? Debido a que el enlace https está limitado por el tamaño de la carga de HttpServer (como Apache, Ngnix), no existe tal restricción cuando se usa ssh.

Use el siguiente método para cambiar al enlace ssh.

  1. Terminal abierto
  2. Cambie al directorio de trabajo de su proyecto.
  3. Obtenga el nombre del repositorio 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. Modifique la dirección git al enlace ssh.
git remote set-url origin [email protected]:[user_name]/[project_name].git

Si determina el nombre del repositorio remoto, continúe directamente con el paso 4. Ahora, puede hacer la operación de inserción felizmente.

Zhenjie Yan
fuente
0

El clon de gps https falla (ssh funciona, ver más abajo):

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

Esto funciona: git clone [email protected]:123456.git

Jean Jordaan
fuente
El OP no preguntó sobre el clon, sino sobre el empuje.
Owen Blacker, el
1
Bueno, el OP preguntó sobre la comunicación con github. Sin embargo, no tengo idea de por qué respondí con una respuesta sobre lo esencial.
Jean Jordaan
Ja, bastante justo :)
Owen Blacker
0

Estaba enfrentando el mismo problema. En mi caso, se trataba de versiones GIT no compatibles entre varios usuarios que están accediendo (pull / push) al mismo proyecto.

Acabo de actualizar la versión GIT y la ruta en la configuración de Android Studio y está funcionando bien para mí.

Editar -

Git para Windows (1.9.5) tiene algún problema, actualizarlo puede ayudar.

Vishal
fuente
0

Estaba enfrentando el mismo problema, sin embargo, se resolvió limpiando el repositorio git (Limpie los archivos no rastreados usando "git clean").

Darpan
fuente
1
cuando hago git clean está mostrando este error: fatal: clean.requireForce por defecto es true y ni -i, -n, ni -f dado; negándose a limpiar
Chandni
para @Chandni y cualquiera que se enfrente al mismo mensaje de error, git te ayuda a ti mismo, intenta, git clean -ipor ejemplo, comenzar en modo interactivo.
hasta el
@seethrough - Gracias
Chandni
0

Necesita cambiar la URL remota a ssh o https

git remote set-url origin [email protected]:laravel/laravel.git

o

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

Espero que esto ayude :)

Vikash
fuente
0

Cuando utilicé la URL https para pasar al maestro remoto, me encontré con el mismo problema, lo cambié a la dirección SSH y todo volvió a funcionar sin problemas.

lvjiujin
fuente