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

Sinopsis

git repack [-a] [-d] [-l] [--depth=<n>] [--window=<n>]

Descripción

El comando git repack empaqueta objetos sueltos en archivos pack y opcionalmente reconsolida packs existentes. Es la operación principal detrás de git gc.

Con -a -d, recrea un solo pack y elimina los antiguos. Con --geometric, mantiene una serie de packs de tamaños geométricamente crecientes para mantenimiento incremental eficiente.

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.

Cuándo usar

Most users rely on gc. Reach for repack directly when tuning storage on a server (large repos benefit from custom --depth, --window) or when investigating storage layout.

Opciones comunes

OpciónDescripción
-aPack everything reachable into a single pack.
-ALike -a but keep unreachables loose.
-dDelete redundant packs after repacking.
-lPass --local to pack-objects.
--depth=<n>Maximum delta chain depth.
--window=<n>Window size for delta selection.
-k, --keep-pack=<name>Keep the named pack untouched.

Ejemplos

git repack -ad
# Single pack, drop redundant ones

git repack -a -d --depth=50 --window=250
# Tighter packing for storage savings (slower)

git repack -A -d
# Keep unreachables loose for safety

Errores comunes

Aggressive parameters consume RAM and CPU disproportionate to space saved. Default values are tuned reasonably. Forgetting -d after -a leaves duplicate packs.

Comandos relacionados

git gc, git pack-objects, git verify-pack, git prune