Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Debug et recherche dans Git : bisect, blame, grep

  • 10 min

Par mis à jour le

Améliorer cette page

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).

BesoinOutilGuide
Trouver le commit qui a introduit un buggit bisectDebug : bisect et blame
Savoir qui a écrit une ligne de codegit blameDebug : bisect et blame
Automatiser la détection du commit fautifgit bisect run <script>Debug : bisect et blame
Chercher une chaîne dans les fichiers actuelsgit grepRechercher dans Git
Trouver quand une chaîne est apparue / a disparugit log -S (pickaxe)Rechercher dans Git
Suivre l'historique d'une fonctiongit log -L :func:fileRechercher dans Git

Rechercher dans Git retrouve du code dans les fichiers ou dans l'historique avec précision : git grep, git log -S (pickaxe) et git log -L. Debug : bisect et blame localise le commit coupable et l'auteur d'une modification avec git bisect, manuel ou automatisé, et git blame -L. Commencez par la recherche si vous savez quoi chercher, par le débogage si vous ne connaissez que le symptôme.

  • git bisect start → git bisect bad → git bisect good <sha> : Git checkout automatiquement les commits à tester
  • git bisect run ./test.sh automatise le processus, le script doit retourner 0 (bon) ou non-zéro (mauvais)
  • git blame -L 10,20 fichier.py affiche l'auteur et le commit de chaque ligne sur la plage 10-20
  • git blame -C détecte les lignes copiées depuis d'autres fichiers, évite les faux positifs
  • git 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

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn