Sinopsis
git prune [-n] [--expire=<date>]
Descripción
El comando git prune elimina objetos inalcanzables más viejos que la ventana de prune (predeterminado 2 semanas). Normalmente lo invoca git gc; raramente se ejecuta directamente.
Los objetos inalcanzables suelen ser de operaciones canceladas, branches eliminados o reflogs expirados. La ventana de gracia previene que prune borre objetos que aún están siendo creados.
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 never run git prune manually — git gc handles it. Reach for it only when gc's defaults don't fit, or when you've explicitly purged history with filter-repo and want immediate space reclamation. Even then, git gc --prune=now is the more common path.
Opciones comunes
| Opción | Descripción |
|---|---|
-n, --dry-run | Show what would be deleted without deleting. |
--expire=<date> | Only prune objects older than this. |
--progress | Show progress. |
--verbose | Detail every object pruned. |
Ejemplos
git prune -n
# Preview prune
git prune --expire=now
# Aggressive: delete all unreachables right now
git prune --expire=2.weeks.ago
# Default behavior: keep recent unreachables
Errores comunes
git prune --expire=now can delete objects that are still in the reflog or stash if you've recently expired them. Always run git fsck first to understand what's at risk. On a busy repo, prune while a fetch or rebase is happening can cause issues.
Comandos relacionados
git gc, git fsck, git reflog expire, git repack