Quand un bug apparaît sans qu’on sache d’où il vient, ou qu’on cherche à retrouver un commit précis, parcourir l’historique Git à la main devient vite fastidieux.
Par exemple, une fonction se comporte mal depuis quelques jours, mais tu ne sais pas quel commit a introduit le problème parmi la centaine des deux dernières semaines.
Chercher un message de commit
Pour retrouver un commit à partir d’un mot dans son message :
git log --all --grep="fix login"
--all inclut toutes les branches, pas seulement celle sur laquelle tu es actuellement.
Chercher un changement de code précis
Pour retrouver les commits qui ont ajouté ou supprimé une ligne contenant un texte précis (une fonction, une variable) :
git log -S "calculateTotal"
Tu obtiendras une sortie similaire à :
commit 8f3a21c...
Author: Jane Doe
Date: Mon Aug 4 14:22:03 2026
refactor: extract calculateTotal into utils
Ajoute -p pour voir directement le diff de chaque commit trouvé :
git log -S "calculateTotal" -p
Trouver qui a modifié une ligne précise
Pour savoir qui a écrit une ligne donnée et dans quel commit :
git blame fichier.js -L 10,20
Chaque ligne affiche le commit, l’auteur et la date de la dernière modification.
Trouver le commit qui a introduit un bug
Quand tu sais qu’un bug est apparu entre deux versions mais pas exactement quand, git bisect automatise la recherche par dichotomie.
Démarre la recherche :
git bisect start
git bisect bad # le commit actuel est buggé
git bisect good v1.2.0 # cette version fonctionnait
Git te place automatiquement sur un commit intermédiaire. Teste ton application, puis indique le résultat :
git bisect good # si le bug n'est pas présent
git bisect bad # si le bug est présent
Répète jusqu’à ce que Git identifie le commit exact :
8f3a21c is the first bad commit
Termine la session pour revenir à l’état initial :
git bisect reset
Solution rapide avec un script automatisé
Si tu as un test qui détecte le bug automatiquement (ex: un script qui échoue si le bug est présent), tu peux automatiser tout le processus :
git bisect start HEAD v1.2.0
git bisect run npm test
Git exécute le test à chaque étape et détermine seul le commit fautif, sans intervention manuelle.
Cette méthode est particulièrement utile sur un gros historique où une recherche manuelle prendrait trop de temps.

