Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git gc [--auto] [--aggressive] [--prune=<date>]

Descrizione

Il comando git gc esegue task di housekeeping: impacchetta oggetti loose, rimuove oggetti irraggiungibili oltre la finestra di prune, impacchetta i ref e aggiorna file ausiliari. Git esegue automaticamente gc --auto dopo operazioni che creano molti oggetti loose (come un fetch grande), quindi la maggior parte degli utenti non invoca mai gc manualmente. L'invocazione manuale è utile dopo aver riscritto la storia, cancellato molti branch o per recuperare spazio su disco immediatamente.

Il flag --aggressive fa lavoro extra — ricalcolando delta — ma raramente vale il tempo. Il comportamento predefinito di Git moderno è ben tunato. L'argomento --prune controlla quanto vecchi devono essere gli oggetti irraggiungibili prima di essere cancellati; il default è due settimane.

Nell'uso quotidiano, git gc si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--autoEsegue solo se le euristiche di Git dicono che è necessaria manutenzione.
--aggressiveSpende più tempo cercando delta ottimali.
--prune=<date>Pota oggetti irraggiungibili più vecchi di questo.
--no-pruneSalta il pruning di oggetti loose.
--quietSopprime output di progresso.
--forceEsegue anche se un altro gc è in corso.

Esempi

git gc
# Manutenzione di routine

git gc --auto
# Cosa Git esegue in background; sicuro da chiamare manualmente

git gc --prune=now
# Recupera spazio aggressivamente; cancella irraggiungibili recenti (usa con cura)

git gc --aggressive
# Repacking lento ed esaustivo — raramente vale la pena

Errori comuni

--prune=now cancella immediatamente oggetti irraggiungibili, possibilmente inclusi quelli ancora referenziati da reflog o stash. Non usarlo a cuor leggero. Disabilitare il gc automatico su un repo grande lascia accumulare oggetti loose; configura maintenance invece per Git più recente.

Comandi correlati

git maintenance, git repack, git prune, git fsck