Tester les entrées expirées du reflog
Dans cette étape, nous allons apprendre comment Git gère le reflog et comment les entrées peuvent éventuellement expirer. Par défaut, Git conserve les entrées du reflog pendant une certaine période. Les entrées accessibles (celles pointées par une branche ou une étiquette) sont conservées pendant 90 jours, tandis que les entrées inaccessibles (celles qui ne sont pointées par rien) sont conservées pendant 30 jours. Après ces périodes, le processus de nettoyage des données inutiles (garbage collection) de Git peut les supprimer.
Bien que nous ne puissions pas simuler le passage du temps dans ce laboratoire pour voir les entrées expirer naturellement, nous pouvons déclencher manuellement le nettoyage des données inutiles de Git avec une option spécifique pour supprimer les anciennes entrées du reflog.
Important : L'exécution de cette commande supprimera les anciennes entrées du reflog en fonction des délais d'expiration configurés. Dans un scénario réel, vous n'auriez généralement pas besoin d'exécuter cela manuellement, sauf si vous avez une raison spécifique pour nettoyer les anciennes entrées du reflog.
Tout d'abord, assurez-vous d'être dans le répertoire my-time-machine
:
cd ~/project/my-time-machine
Maintenant, exécutons la commande de nettoyage des données inutiles avec l'option de suppression pour les entrées du reflog. Nous allons définir un délai d'expiration très court pour les entrées inaccessibles pour démontrer l'effet.
git gc --prune=now --aggressive
Cette commande demande à Git d'exécuter le nettoyage des données inutiles immédiatement (--prune=now
) et de manière agressive (--aggressive
) pour nettoyer les objets libres et supprimer les entrées inaccessibles du reflog.
Après avoir exécuté la commande, vérifions le reflog à nouveau :
git reflog
Vous pourriez constater que certaines anciennes entrées, surtout si vous aviez effectué plus d'opérations avant ce laboratoire, ont peut-être disparu. Dans notre dépôt simple avec seulement deux entrées de reflog, il est possible que les deux soient toujours présentes car elles sont relativement nouvelles et l'une est toujours accessible via HEAD
et master
. Cependant, si vous aviez un historique plus complexe avec des validations inaccessibles, cette commande les supprimerait en fonction des paramètres d'expiration.
Le principal enseignement ici est que le reflog n'est pas permanent. Git nettoie les anciennes entrées pour économiser de l'espace. Cependant, pour les flux de travail de développement typiques, les délais d'expiration par défaut sont généralement suffisants pour récupérer la plupart des erreurs.
Comprendre que les entrées du reflog ont une date d'expiration vous aide à apprécier l'importance de créer des validations et des branches significatives pour préserver les points importants de l'historique de votre projet.