Aller au contenu
English
English
Développement medium

Investiguer et nettoyer l'historique Git

10 min de lecture

Git ne jette presque rien. Les commits que vous croyez perdus sont accessibles via git reflog : 90 jours tant qu'une référence y mène encore, 30 jours sinon. Les fichiers sensibles accidentellement commités peuvent être expurgés de tout l'historique. Les bugs apparus subitement peuvent être localisés au commit près en quelques minutes.

Ces trois situations semblent graves, elles sont toutes récupérables avec la bonne commande.

SituationOutilGuide
J'ai supprimé une branche par erreurgit reflogRécupérer des données perdues
J'ai fait reset --hard et perdu des commitsgit reflogRécupérer des données perdues
J'ai commité un fichier sensible (pas encore pushé)git reset HEAD~1 + .gitignoreNettoyer l'historique et les fichiers
J'ai commité et pushé un secretgit filter-repo + révoquer le secretNettoyer l'historique et les fichiers
Un bug est apparu, je ne sais pas depuis quel commitgit bisectDiagnostiquer des problèmes
Je veux identifier qui a introduit une ligne de codegit blameDiagnostiquer des problèmes
  • git reflog est le filet de sécurité ultime, consultez-le avant toute tentative de récupération
  • git bisect localise un commit coupable en O(log n), 10 commits à tester sur 1 000 si le test est automatisé
  • git filter-repo (pas filter-branch) est l'outil recommandé pour réécrire l'historique globalement
  • Après un filter-repo pushé, tous les membres de l'équipe doivent refaire un git clone, prévenir avant
  • Un fichier dans .gitignore n'est pas retiré de l'historique existant, il faut git rm --cached en plus

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens ce site gratuitement, sans publicité, sans profilage et sans compte à créer. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn