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ón | Descripción |
|---|---|
-a | Pack everything reachable into a single pack. |
-A | Like -a but keep unreachables loose. |
-d | Delete redundant packs after repacking. |
-l | Pass --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