Git falla al presionar commit a github

130

Cloné un repositorio de git que he alojado en github en mi computadora portátil. Pude enviar con éxito un par de commits a github sin problemas. Sin embargo, ahora recibo el siguiente error:

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

A partir de aquí se cuelga y que finalmente tienen que CTRL+ Cde nuevo a la terminal.

Stephen Melvin
fuente
¿Por qué hay un error HTTP? ¿No empujas a github a través de SSH?
Cascabel
Para aclarar: la url en la originsección de .git/configno dice http, ¿verdad?
Cascabel
@Jefromi Cloné mi repositorio privado usando el enlace http de lectura / escritura.
Stephen Melvin
No, dice https. Esto es extraño porque he podido hacer dos empujones antes del fallo.
Stephen Melvin

Respuestas:

292

Tuve el mismo problema y creo que tiene que ver con el tamaño del repositorio (editado o el tamaño de un archivo en particular) que está tratando de impulsar.

Básicamente pude crear nuevos repositorios y empujarlos a github. Pero uno existente no funcionaría.

El código de error HTTP parece respaldarme, es un error de 'Longitud requerida'. Entonces, tal vez sea demasiado grande para calcificar o engrosar que el máximo. Quién sabe.

EDITAR

Encontré que el problema puede ser archivos grandes. Tenía una actualización que no empujaría a pesar de que tuve empujes exitosos hasta ese punto. Solo había un archivo en el commit pero resultó ser 1.6M

Entonces agregué el siguiente cambio de configuración

git config http.postBuffer 524288000

Para permitir hasta el tamaño del archivo 500M y luego mi empuje funcionó. Puede haber sido que este fue el problema inicialmente al empujar un gran repositorio sobre el protocolo http.

EDICIÓN FINAL

la forma en que podía hacer que funcionara (EDITAR antes de modificar postBuffer) era tar mi repositorio, copiarlo en una máquina que puede hacer git sobre ssh y empujarlo a github. Luego, cuando intente hacer un push / pull desde el servidor original, debería funcionar a través de https. (ya que es una cantidad de datos mucho menor que un envío original).

Espero que esto ayude.

Será
fuente
También funcionó para mí, aunque tuve un error HTTP 501 en lugar del 411. ¡Gracias!
Emaad Ahmed Manzoor
¡Gracias! esto funcionó e incluso aceleró la carga. Estaba tratando de impulsar un sitio web a los nuevos sitios web de Windows Azure y seguía fallando.
Jake
23
¿Hay una desventaja en establecer este valor muy alto?
snogglethorpe
@snogglethorpe Potencialmente: "Transfer-Encoding: chunked se usa para evitar crear un archivo de paquete masivo localmente". Si establece el valor en algo enorme, puede terminar generando archivos de paquetes masivos cuando intenta empujar. No todos los sistemas de archivos manejan bien los archivos masivos y es posible que no se poden eficientemente. Puede ver estos archivos en .git / objects / pack.
cáñamo
Cambiarlo http.postBufferes más innecesario que dañino, pero hay un efecto secundario negativo: aumentarlo por encima del valor predeterminado puede aumentar la latencia para los empujes más grandes (ya que el cliente almacenará la solicitud HTTP en fragmentos más grandes).
Swatantra Kumar
8

Si este comando no ayuda

git config http.postBuffer 524288000

Intenta cambiar el método ssh a https

git remote -v
git remote rm origin 
git remote add origin https://github.com/username/project.git
Nikita Pushkar
fuente
4

Parece un problema del servidor (es decir, un problema de "GitHub").
Si nos fijamos en este hilo , puede suceder cuando git-http-backendse daña el montón (y dado que simplemente implementaron un soporte http inteligente ...)
Pero cualquiera que sea la causa real, también puede estar relacionado con una interrupción esporádica reciente en uno de los servidores de archivos GitHub .

¿Sigue viendo este mensaje de error? Porque si lo haces:

  • verifique su versión local de Git (y actualice a la última)
  • informar esto como un error de GitHub .

Nota: ¡ El soporte Smart HTTP es un gran problema para quienes estamos detrás de un proxy de firewall empresarial autenticado!

De ahora en adelante, si clonas un repositorio sobre la http://url y estás usando un cliente Git versión 1.6.6 o superior, Git usará automáticamente el mecanismo de transporte más nuevo y mejor.
Sin embargo, aún más sorprendente es que ahora puede superar ese protocolo y clonar repositorios privados también. Si accede a un repositorio privado, o es un colaborador y desea acceso push, puede poner su nombre de usuario en la URL y Git le pedirá la contraseña cuando intente acceder a ella.

Los clientes más antiguos también recurrirán a la forma más antigua y menos eficiente, por lo que nada debería romperse, solo los clientes más nuevos deberían funcionar mejor.

De nuevo, asegúrese de actualizar primero su cliente Git.

VonC
fuente
Tengo problemas similares detrás de un enrutador inalámbrico ADSL (French Orange Livebox): imposible publicar mi clave SSH en github.com , presionar atascado sobre https ... hasta que use un acceso a Internet alternativo.
Yves Martin
El Smart HTTP Support logró ayudarme a través de nuestro proxy de firewall cuando recibía "error: RPC falló; resultado = 22, código HTTP = 0" cuando intenté presionar.
Boggin
@Boggin Sí, confirmo que http inteligente es generalmente la opción preferida cuando uno está detrás de un proxy. Los puertos estándar http / https están (casi) siempre abiertos.
VonC
0

Empujar desde Git GUI en lugar de Bash funciona para mí.

Vitaly Leskiv
fuente
0

Traté de empujar a mi propio servidor alojado bonobo-git, y no me di cuenta, que http.postbuffer significaba el directorio del proyecto ...

así que solo para otros confundidos:

¿por qué? En mi caso, tenía grandes archivos zip con activos y algunos PSD también empujados, demasiado grande para el búfer, supongo.

Cómo hacer esto http.postbuffer: ejecute ese comando dentro del directorio src de su proyecto, al lado de la carpeta .git, no en el servidor.

tenga en cuenta que se crearán archivos temporales grandes (trozos) de ese tamaño de búfer.

Nota: Simplemente verifique sus archivos más grandes, luego configure el búfer.

Plátano Ácido
fuente
-2

El problema para empujar es principalmente debido al tamaño de los archivos que necesitan ser empujados. Estaba tratando de empujar algunas bibliotecas de solo 2 mb de tamaño, luego el empuje estaba dando un error de RPC con el resultado 7. La línea es de 4 mbps y funciona bien. Algunos intentos posteriores al empuje me dieron éxito. Si se produce dicho error, espere unos minutos y siga intentándolo.

También descubrí que hay algunas fallas de RPC si el github está inactivo o si la red está inestable a su lado.

¡Así que seguir intentándolo después de algunos intervalos es la única opción!

Apurv Nerlekar
fuente
-2

en estos casos puedes probar ssh si https está atascado.

También puede intentar aumentar el tamaño del búfer a una figura astronómica para que no tenga que preocuparse por el tamaño del búfer más git config http.postBuffer 100000000

RahulMohan Kolakandy
fuente