Sinossi
git prune [-n] [--expire=<date>]
Descrizione
Il comando git prune cancella oggetti loose che non sono raggiungibili da nessun ref. Normalmente è invocato indirettamente da git gc; eseguirlo direttamente bypassa alcuni controlli di sicurezza di gc. Il periodo di grazia --expire (default 2 settimane) previene la cancellazione di oggetti creati di recente che possono appartenere a operazioni in corso.
Nell'uso quotidiano, git prune si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Quando usarlo
La maggior parte degli utenti non esegue mai git prune manualmente — git gc lo gestisce. Ricorri ad esso solo quando i default di gc non si adattano, o quando hai esplicitamente eliminato la storia con filter-repo e vuoi recupero immediato dello spazio. Anche allora, git gc --prune=now è il percorso più comune.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-n, --dry-run | Mostra cosa verrebbe cancellato senza cancellare. |
--expire=<date> | Pota solo oggetti più vecchi di questo. |
--progress | Mostra il progresso. |
--verbose | Dettaglia ogni oggetto potato. |
Esempi
git prune -n
# Anteprima del prune
git prune --expire=now
# Aggressivo: cancella tutti gli irraggiungibili adesso
git prune --expire=2.weeks.ago
# Comportamento predefinito: mantiene irraggiungibili recenti
Errori comuni
git prune --expire=now può cancellare oggetti che sono ancora nel reflog o stash se li hai recentemente fatti scadere. Esegui sempre prima git fsck per capire cosa è a rischio. Su un repo trafficato, fare prune mentre un fetch o rebase sta accadendo può causare problemi.
Comandi correlati
git gc, git fsck, git reflog expire, git repack