Git se cuelga mientras escribe objetos

100

Estoy tratando de hacerlo git push -u origin mastery simplemente se cuelga en

Writing objects:  99% (219/220), 12.65 MiB | 97 KiB/s

La 12.65parte cambia. Cuando salgo del proceso y lo ejecuto de nuevo, se reanuda al 99% pero nunca termina, igual que antes.

Nunca se empuja con éxito. Este es el compromiso inicial.

mattalxndr
fuente
¿A dónde quieres empujar? ¿Está utilizando SSH o algún otro protocolo?
Paŭlo Ebermann
26
¿Configurar la http.postbufferayuda? stackoverflow.com/questions/6842687/…
VonC
3
El comentario de VonC es demasiado fácil de pasar por alto. Esto funciona para mi.
Jueves
1
Increíble. Eso también lo hizo por mí. Y ahora es 2018. Y es SSH, no HTTP. Y todo el repositorio es como 15 MB. Y el servidor "remoto" es localhost. ¡Dejen de romantizar a Git, amigos, por favor! ;)
Sz.

Respuestas:

219

Seguí el consejo de VonC:

git config --global http.postBuffer 524288000

Para futuras referencias, basadas en comentarios:

500 MB: 524288000 (as posted in the original answer)
1 GB: 1048576000
2 GB: 2097152000 (anything higher is rejected as 'out of range')
Hugo Forte
fuente
4
¡Dios mío, gracias por esto! estaba tirando de mi cabello, y esto resolvió mis problemas!
Brett Thomas
3
@HugoForte El aumento del búfer pareció resolver mi escritura pendiente de archivos, pero mi git push nunca se completó (se colgó después Writing objects: 100%); anteriormente estaba colgado al 25%, por lo que esto claramente ayudó. Sin embargo, todavía estaba teniendo un comportamiento "extraño". Me reinicia el sistema y esto parecía resolver las cosas ... FYI ... si alguien todavía está golpeando problemas después de aumentar su memoria intermedia, reiniciar mi sistema ayudado en mi situación (antigua solución de la escuela, pero, no obstante, un nuevo reinicio realmente ayudó).
twknab
4
¿Alguien puede explicar de dónde 524288000viene el número ?
Ryre
6
@Ryre son 500 MB
Hugo Forte
1
Dios los bendiga y Stackoverflow, sería un completo perdedor sin,
decoder7283
35

Esto sucedía debido a un archivo enorme y no ignorado en el directorio de repositorio. ¡Ups!

EDITAR

El bloqueo se debió a que el archivo estaba tardando mucho en cargarse. No se suponía que el archivo se hubiera incluido en el envío.

EDITAR

Si bien es cierto que un archivo enorme podría ser la razón detrás de este problema, si no puede ignorar el archivo en cuestión o simplemente tiene que presionarlo, siga esta respuesta.

mattalxndr
fuente
@TimoSolo ¿Por qué haría eso? Yo era el que tenía el problema y documenté la solución exacta. Muy claro.
mattalxndr
4
Sí, su solución fue eliminar el problema. Por el bien de otras personas que realmente necesitan enviar un archivo grande, la respuesta de @ hugo-forte resuelve el problema. Usted no tiene que, sólo pensé que ayudaría a más personas - en el espíritu del SO.
TimoSolo
1
La pregunta no es "¿Cómo puedo confirmar y luego enviar un archivo enorme?". Es "Mi git push es interminable. ¿Por qué?" Si no esperas que el impulso tarde una eternidad, entonces probablemente (como yo) no fue tu intención enviar ese archivo enorme.
mattalxndr
3
@mattalxndr Cuando la respuesta aceptada tiene 1/8 de los votos, probablemente debería cambiarla.
NorCalKnockOut
1
@mattalxndr Ninguna respuesta es perfecta. Uno identifica la causa y el otro ofrece una solución. La respuesta ideal identificaría la causa, explicaría por qué tiene el resultado dado y ofrecería las dos soluciones alternativas. En mi opinión, de las opciones actuales, la respuesta de Hugo Forte es superior porque resolverá el problema independientemente de si tenía la intención de enviar el archivo o no. No se trata de ignorar a las personas que cometieron el mismo error que tú; soluciona el problema tanto para ellos como para cualquier otra persona, pero les deja eliminar un archivo si no tenían la intención de enviarlo.
BZ1
7

Tuve el mismo problema con (escribir objetos% 16) atascado y luego fatal. Resolví esto guardando los cambios actuales y cloné un nuevo repositorio, luego copié los archivos modificados en él.

P.ej. Suponga que el repositorio actual es A, entonces todo lo que necesita hacer es:

  1. mv A B
  2. git clone A
  3. mv B/* A/
  4. rm -rf B

Luego comprometa y empuja y todo funcionó bien. Reconoció los archivos movidos como modificados :)

Maha
fuente
Estabas experimentando un síntoma diferente. El mío no tuvo ningún error fatal.
mattalxndr
5

En mi caso, estaba usando una carpeta git con derechos incorrectos almacenados en la misma unidad que un repositorio, pero podría ser lo mismo con ssh incluso si usa un usuario de inicio de sesión autorizado.

Luego, verifique si tiene los derechos correctos para escribir en el repositorio distante.

Ejemplo:

Iniciar repositorio local y distante

git init /tmp/src
git init --bare /tmp/dst
cd /tmp/src

Agregar repositorio remoto al origen

src > git remote add dest /tmp/dst

Simulando problema

src > chmod -R 555 /tmp/dst

Agregar un archivo falso y presionarlo

src > touch a && git add a && git commit -m 'demo'
src > git push --set-upstream dest master
src > git push
Counting objects: 3, done.
Writing objects: 99% (2/3), 202 bytes | 0 bytes/s.

Git cuelga

Solución

src > chmod -R 775 /tmp/dst
Naewis
fuente
2
Considere agregar algunos detalles más ejemplares a su respuesta, gracias.
Mirza Sisic
1
Lo siento. Es mejor ?
Naewis
3

En mi situación era el tamaño del archivo. Al agregar un archivo .gitignore con las extensiones requeridas, pude ignorar la mayoría de los archivos no deseados que se enviarían.

Skitty
fuente
2

En mi caso, tenía una velocidad de carga de Internet lenta y el archivo que quería enviar era grande, el truco es usar git LFS (almacenamiento de archivos grandes) que es mucho más paciente para cargar archivos grandes, puede encontrar un tutorial de git LFS aquí

usuario3160702
fuente
1

git clean -f -nresuelve mi problema. Hay muchos archivos sin seguimiento no detectados. Pero tenga cuidado porque esto eliminará archivos en su directorio

Sherlock
fuente
3
Específicamente, ¿qué archivos eliminará?
Jazimov
1

En mi caso, estaba tratando de presionar sin completar las reglas de mi empresa. Más tarde supe que deberíamos comenzar nuestros mensajes de confirmación con "MOBIL-XXXX", donde XXXX es el número que los analistas asignan a los desarrolladores en Jira (otra herramienta que usamos para rastrear el proceso de desarrollo).

Asegúrese de verificar si su empresa tiene una regla de restricción similar.

Onat Korucu
fuente
0

Tenía el mismo problema en la máquina con Windows 10, writing objectsse colgaba, pero en una situación un poco diferente.

El problema que tenía era solo cuando intentaba agregar nuevos archivos al repositorio. Si actualizo archivos que ya existen en el repositorio, todo estaba funcionando bien y realmente no importa si el tamaño del archivo era grande o no. Principalmente estaba tratando de agregar nuevos scripts.

Probé todas las demás soluciones encontradas en Internet, pero nada funcionó en mi caso y lo último que probé realmente funcionó. Parece que se debió a algunos permisos de Windows para la unidad y carpeta específicas que impiden que la aplicación escriba en esas carpetas específicas o actualice los archivos incluso cuando estoy conectado con una cuenta de administrador y estaba ejecutando la aplicación como administrador. Entonces este comando:

attrib -r +s D:\foldername 

solucionó el problema para mí.

Solo publándolo aquí, tal vez alguien tenga el mismo problema que el mío.

h4rd4r7c0r3
fuente