Git exécute automatiquement la récupération de place :
• S'il y a trop d'objets en vrac dans le référentiel
• Lorsqu'un push vers un référentiel distant se produit
• Après quelques commandes qui pourraient introduire de nombreux objets en vrac
• Lorsque certaines commandes telles que git reflog expirent, le demander explicitement
Enfin, le garbage collection se produit lorsque vous le demandez explicitement à l'aide de la commande git gc. Mais quand cela devrait-il être? Il n'y a pas de réponse solide à cette question, mais il existe de bons conseils et de bonnes pratiques.
Vous devriez envisager d'exécuter git gc manuellement dans quelques situations:
• Si vous venez de terminer une branche de filtre git. Rappelez-vous que la branche de filtre réécrit de nombreuses validations, en introduit de nouvelles et laisse les anciennes sur une référence qui devrait être supprimée lorsque vous êtes satisfait des résultats. Tous ces objets morts (qui ne sont plus référencés puisque vous venez de supprimer la référence qui les pointe) doivent être supprimés via le garbage collection.
• Après quelques commandes qui pourraient introduire de nombreux objets lâches. Cela pourrait être un gros effort de rebase, par exemple.
Et d'un autre côté, quand devriez-vous vous méfier de la collecte des ordures?
• S'il existe des références orphelines que vous voudrez peut-être récupérer
• Dans le contexte de git rerere et vous n'avez pas besoin de sauvegarder les résolutions pour toujours
• Dans le contexte où seules les balises et les branches sont suffisantes pour que Git conserve un commit de façon permanente
• Dans le contexte des récupérations FETCH_HEAD (récupérations URL directes via git fetch) car elles sont immédiatement soumises à la récupération de place