update tutorial tag tab name example commits commands git git-gc

tutorial - Detener un git gc-agresivo, ¿es algo malo?



git tag name (3)

FWIW, acabo de corromper un repositorio abortando git gc con CTRL + C. git fsck ahora muestra los siguientes errores:

error: HEAD: invalid sha1 pointer [...] error: refs/heads/master does not point to a valid object! notice: No default references

Y bastantes

dangling commit [...]

No voy a investigar sobre esto, pero me gustaría señalar que voy a evitar abortar git gc .

Estoy ejecutando un git gc --aggressive en un repositorio muy grande (apx 100 gb). Ha estado funcionando desde hace dos noches, y desde hace un par de horas, se ha quedado en "Compressing Objects: 99% (76496/76777)"

Si presiono el proceso, ¿cuáles son las consecuencias? ¿Mi repositorio será inutilizable? Mi intuición dice que no, pero me gustaría tener algunas opiniones. ¡Gracias!


Nota: hay una evolución interesante para git 2.0 (Q2 2014) :

La opción "git gc --aggressive" learn "--depth" y la variable de configuración "gc.aggressiveDepth" permiten el uso de una profundidad menos alocada que el valor predeterminado incorporado de 250.

Esto se describe en commit 125f814 , hecho por Nguyễn Thái Ngọc Duy ( pclouds ) :

Cuando 1c192f3 ( gc --aggressive : gc --aggressive realmente agresivo - 2007-12-06) hizo que --depth=250 el valor predeterminado, realmente no explica la razón, especialmente las ventajas y desventajas de --depth=250 .

Un correo antiguo de Linus a continuación lo explica en detalle.
En pocas palabras, --depth=250 es un protector de disco y un asesino de rendimiento .
No todos están de acuerdo con esa agresividad.
Deja que el usuario lo configure.

Eso podría ayudar a evitar el problema de "congelación" que tiene cuando ejecuta ese comando en repositorios grandes.


Se supone que git siempre está a salvo de interrupciones como esta. Sin embargo, si está preocupado, sugiero Ctrl + Z y luego ejecute git fsck --full para asegurarse de que el sistema sea consistente.

Hay una serie de variables de git-config que pueden ayudar a que git-gc vaya más rápido. Uso lo siguiente en un repositorio grande en particular, pero hay muchas más opciones para probar al azar (o estudiar cuidadosamente, cualquiera que sea).

git config pack.threads 1 git config pack.deltaCacheSize 1 git config core.packedGitWindowSize 16m git config core.packedGitLimit 128m git config pack.windowMemory 512m

Esto solo ayuda si su problema es que se está quedando sin memoria.