Synopsis
git prune [-n] [--expire=<date>]
Description
The git prune command deletes loose objects that aren't reachable from any ref. It is normally invoked indirectly by git gc; running it directly bypasses some of gc's safety checks. The --expire grace period (default 2 weeks) prevents deleting recently created objects that may belong to in-progress operations.
Dans l'usage quotidien, git prune s'intègre étroitement avec les alias de shell, les plugins d'éditeur et l'intégration continue. Les utilisateurs avancés ajoutent souvent des alias combinant les flags qu'ils passent toujours, ou enveloppent la commande dans des scripts qui appliquent les conventions d'équipe. Le formatage de la sortie peut être personnalisé via la configuration Git — pretty formats, schémas de couleurs et comportement du pager sont tous ajustables. Quand quelque chose tourne mal, la première étape de diagnostic est généralement de relancer la commande avec GIT_TRACE=1 dans l'environnement, ce qui révèle les appels de plomberie sous-jacents. Pour les situations inhabituelles, la sortie --help (git prune --help) ouvre la page de manuel complète avec les détails de chaque option, y compris celles rarement utilisées dans les workflows ordinaires mais essentielles pour le débogage ou le scripting à grande échelle.
Comprendre comment git prune interagit avec le reste du modèle de données de Git — la base d'objets, l'index, les refs et l'arborescence de travail — est rentable. Chaque commande opère sur un sous-ensemble de ces pièces, et savoir laquelle elle touche aide à prédire les résultats et récupérer après les erreurs. Lire la documentation officielle de Git en parallèle de la pratique sur un dépôt jetable est la façon la plus rapide d'intérioriser les subtilités. La plupart des problèmes de production avec Git proviennent de l'une de trois causes : comportement par défaut surprenant, opérations réseau partielles, ou réécriture d'historique déjà partagé. Un modèle mental fonctionnel des effets de bord de git prune aide à éviter les trois.
When to Use
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.
Options courantes
| Option | Description |
|---|---|
-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. |
Exemples
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
Erreurs fréquentes
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.
Commandes liées
git gc, git fsck, git reflog expire, git repack