Git esegue automaticamente la garbage collection :
• Se ci sono troppi oggetti sciolti nel repository
• Quando si verifica un push in un repository remoto
• Dopo alcuni comandi che potrebbero introdurre molti oggetti sciolti
• Quando alcuni comandi come git reflog scadono, lo richiedono esplicitamente
E infine, la garbage collection si verifica quando lo richiedi esplicitamente usando il comando git gc. Ma quando dovrebbe essere? Non c'è una risposta solida a questa domanda, ma ci sono alcuni buoni consigli e buone pratiche.
Dovresti considerare di eseguire git gc manualmente in alcune situazioni:
• Se hai appena completato un ramo del filtro git. Ricorda che il ramo del filtro riscrive molti commit, ne introduce di nuovi e lascia quelli vecchi su un riferimento che dovrebbe essere rimosso quando sei soddisfatto dei risultati. Tutti quegli oggetti morti (a cui non si fa più riferimento da quando hai appena rimosso un riferimento che li punta) dovrebbero essere rimossi tramite Garbage Collection.
• Dopo alcuni comandi che potrebbero introdurre molti oggetti sciolti. Questo potrebbe essere un grande sforzo di ribasso, per esempio.
E il rovescio della medaglia, quando dovresti stare attento alla raccolta dei rifiuti?
• Se ci sono riferimenti orfani che potresti voler recuperare
• Nel contesto di git rerere e non è necessario salvare le risoluzioni per sempre
• Nel contesto del fatto che solo tag e rami sono sufficienti per far sì che Git mantenga un commit in modo permanente
• Nel contesto dei recuperi FETCH_HEAD (recuperi diretti da URL tramite git fetch) perché sono immediatamente soggetti alla garbage collection