2012-09-29 12 views
108

Tengo solo una rama. Durante unos meses he estado usandofalla de git push: error de RPC; resultado = 22, código HTTP = 411

git push origin master 

para comprometerme con mi repositorio local. Ayer por la noche después de que hice algunos cambios menores en mi repositorio local y trató de empujar usando el mismo comando, tengo este error:

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 

Busqué en Google y encontré preguntas como this one y this one, pero ninguna de las respuestas a estas preguntas resuelven mi problema

La mayoría de las respuestas sugieren el problema de cabeza separada. Sin embargo, no creo que mi cabeza esté desapegada. Ni creo que estoy en la rama equivocada (ya que sólo tengo una rama ...)

Hice algunos experimentos para averiguar lo que está mal, y aquí están los resultados que obtuve:

(1) primero viene mi git status salida

# 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) Cuando escribo git reflog, puedo ver todos mis commits locales, pero el repositorio remoto no se actualizará.

(3) Cuando escribo git branch -a, consigo

* master 
    remotes/origin/master 

(4) Cuando escribo git remote show origin, consigo

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

Creo que la última línea de la salida (el "EXPRES- reenviables ") es extraño, pero no estoy seguro de qué es lo que está mal ...

+0

'fast-forwardable' significa que puede enviar sus cambios locales a la sucursal remota, nada criminal :-) –

Respuesta

246

Si intenta enviar un gran conjunto de cambios a un repositorio de Git con HTTP o HTTPS, puede recibir un mensaje de error como como error: RPC failed; result=22, HTTP code = 411. Esto es causado por un valor predeterminado de configuración de Git que limita ciertas operaciones HTTP a 1 megabyte.

Para cambiar este límite de ejecución dentro de su repositorio local

git config http.postBuffer *bytes* 

donde los bytes es el número máximo de bytes permitidos. Para exmaple:

git config http.postBuffer 524288000 

para 500MB (gracias @Hengjie)

+1

¡correcto! ¡Gracias! – CherryQu

+50

Un ejemplo es 'git config http.postBuffer 524288000' para 500MB. – Hengjie

+9

Si está utilizando gitlab, es posible que deba cambiar también la configuración de nginx ('/ etc/nginx/sites-available/gitlab'). Más información: https://github.com/gitlabhq/gitlabhq/issues/3099 – DanielB

22

También puede hacer esto a nivel mundial -

git config --global http.postBuffer 524288000 

que permitirá a todos los repositorios locales para empujar hasta 500 MB de datos.

2

Si está utilizando TortoiseGit para Windows, la forma más fácil es usar la configuración integrada.

En un explorador de archivos, presione el botón izquierdo del mouse, seleccione TortoiseGit -> Configuración. Acepta el mensaje de información. Ahora puede elegir si desea configurar la propiedad solo para el proyecto o sistema actual.Para la prensa de todo el sistema de configuración "editar gitconfig todo el sistema" y añadir la siguiente línea a la sección [http]:

postBuffer = 524288000 

(que la sección [http] no existe, lo crea)

2

Ninguna de las soluciones siempre trabajó para nos. Tuvimos que cambiar al ssh para hacer que esto funcione en lugar de la solución HTTPS.

0

Resolví el error 22 de la siguiente manera: En el comando "git clone" NO proporcioné al usuario: contraseña. El clon funcionó, pero no el empuje. Solución para el error 22: Modificar .git/config la url como esta: url = http://user:[email protected]/ ... Luego, el impulso funcionó.