Por Anónimo (no verificado) , 29 Abril 2026

Sinopsis

git gc [--auto] [--aggressive] [--prune=<date>]

Descripción

El comando git gc ('garbage collect') empaqueta objetos sueltos en archivos pack, elimina objetos inalcanzables más viejos que la ventana de prune, y expira entradas viejas del reflog. Mantiene el repo compacto y rápido.

Auto-gc se dispara automáticamente cuando se acumulan demasiados objetos sueltos. Ejecutar git gc manualmente es seguro pero rara vez necesario; --aggressive es CPU-pesado y rara vez vale la pena.

En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.

Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.

Opciones comunes

OpciónDescripción
--autoRun only if Git's heuristics say maintenance is needed.
--aggressiveSpend more time finding optimal deltas.
--prune=<date>Prune unreachable objects older than this.
--no-pruneSkip pruning of loose objects.
--quietSuppress progress output.
--forceRun even if another gc is in progress.

Ejemplos

git gc
# Routine maintenance

git gc --auto
# What Git runs in the background; safe to call manually

git gc --prune=now
# Aggressively reclaim space; deletes recent unreachables (use with care)

git gc --aggressive
# Slow, exhaustive repacking — rarely worth it

Errores comunes

--prune=now immediately deletes unreachable objects, possibly including ones still referenced by reflog or stash. Don't use it casually. Disabling automatic gc on a large repo lets loose objects accumulate; configure maintenance instead for newer Git.

Comandos relacionados

git maintenance, git repack, git prune, git fsck