Quand un bug apparaît et que vous ne savez pas depuis quand il est là,
Git dispose d’outils qui localisent le problème en quelques minutes.
git bisect fait une recherche dichotomique dans l’historique : vous lui
donnez un commit “bon” et un commit “mauvais”, il trouve le commit coupable
en $O(\log n)$ opérations.
Ces deux guides couvrent l’investigation d’un dépôt sous deux angles : celui du débogage de régression (bisect, blame) et celui de la recherche de code (grep, log -S, log -L).
Quel outil pour quel besoin ?
Section intitulée « Quel outil pour quel besoin ? »| Besoin | Outil | Guide |
|---|---|---|
| Trouver le commit qui a introduit un bug | git bisect | Debug : bisect et blame |
| Savoir qui a écrit une ligne de code | git blame | Debug : bisect et blame |
| Automatiser la détection du commit fautif | git bisect run <script> | Debug : bisect et blame |
| Chercher une chaîne dans les fichiers actuels | git grep | Rechercher dans Git |
| Trouver quand une chaîne est apparue / a disparu | git log -S (pickaxe) | Rechercher dans Git |
| Suivre l’historique d’une fonction | git log -L :func:file | Rechercher dans Git |
Guides de cette section
Section intitulée « Guides de cette section » Rechercher dans Git git grep, git log -S (pickaxe), git log -L : retrouvez du code dans les fichiers ou dans l'historique avec précision.
Debug : bisect et blame git bisect (manuel et automatisé), git blame -L : localisez le commit coupable et l'auteur d'une modification.
À retenir
Section intitulée « À retenir »git bisect start→git bisect bad→git bisect good <sha>: Git checkout automatiquement les commits à testergit bisect run ./test.shautomatise le processus — le script doit retourner 0 (bon) ou non-zéro (mauvais)git blame -L 10,20 fichier.pyaffiche l’auteur et le commit de chaque ligne sur la plage 10-20git blame -Cdétecte les lignes copiées depuis d’autres fichiers — évite les faux positifsgit log -S "motclé"(pickaxe) trouve les commits qui ont ajouté ou supprimé cette chaîne — pas les commits qui l’ont juste déplacée
Prochaines étapes
Section intitulée « Prochaines étapes » Multi-dépôts et transfert Submodules, subtree, bundling : gérer des dépôts imbriqués et les transferts hors-ligne.
Vue d'ensemble des outils avancés Tous les outils avancés Git en un coup d'œil.