0Pricing
Git & GitHub Professional Workflow · Leçon

Git Bisect pour le débogage

Utilisez `git bisect` pour trouver efficacement la validation précise qui a introduit un bug et gagner du temps lors du débogage.

Git Bisect pour le débogage est une leçon Git & GitHub Professional Workflow gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Git & GitHub Professional Workflow, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Git & GitHub Professional Workflow comprend 4 leçons au total.

Trouver les bogues plus rapidement avec Git

Le débogage peut être difficile. Parfois, un bogue apparaît sans que vous sachiez quelle modification l'a provoqué.

git bisect est une commande Git puissante qui vous aide à déterminer précisément quel commit a introduit un bogue. Elle utilise un algorithme de recherche binaire pour réduire rapidement un ensemble de milliers de commits.

La puissance de la recherche binaire

Imaginez que votre projet comporte 100 commits et qu'un bogue soit apparu quelque part entre le premier et le dernier. Les vérifier un par un serait très lent !

git bisect fonctionne comme un jeu où il faut « deviner le nombre » :

  • Vous indiquez à Git un commit « bon » (où le bogue n'était pas présent).
  • Vous indiquez à Git un commit « mauvais » (où le bogue est présent).
  • Git choisit un commit situé approximativement au milieu et vous demande de le tester.
  • Vous le marquez comme « bon » ou « mauvais », et Git divise par deux l'espace de recherche.

Commençons la recherche !

Pour commencer, vous devez indiquer à Git que vous démarrez une session de recherche dichotomique. Cette commande initialise le processus :

git bisect start

Après le démarrage, vous indiquerez un commit « mauvais » connu (où le bogue existe) et un commit « bon » connu (où le bogue n'existait définitivement pas).

Souvent, le commit « mauvais » est votre HEAD actuel, et le commit « bon » peut être une ancienne étiquette de version ou un commit datant de quelques jours.

Définir les limites de vos commits

Une fois git bisect démarré, vous définissez votre plage de recherche :

  • Commit mauvais : il s'agit d'un commit dans lequel vous savez que le bogue existe. Utilisez git bisect bad <commit-hash> ou simplement git bisect bad s'il s'agit de votre HEAD actuel.
  • Commit bon : il s'agit d'un commit dans lequel vous savez que le bogue n'existait PAS. Utilisez git bisect good <commit-hash>.

Git extraira ensuite automatiquement un commit situé au milieu de cette plage.

Tester et réduire la plage

Après avoir marqué vos commits bon et mauvais, Git extraira automatiquement un commit situé au milieu de la plage. Votre rôle consiste à tester le code de ce commit extrait.

  • Si le bogue IS présent, saisissez git bisect bad.
  • Si le bogue IS NOT présent, saisissez git bisect good.

Git choisira ensuite un autre commit central dans la plage restante. Vous répéterez cette opération jusqu'à ce que Git trouve le premier commit « mauvais ».

Simuler l'introduction d'un bogue

Imaginons un « bogue » simple dans un script. Nous allons simuler l'historique d'un projet dans lequel une petite erreur a été introduite.

Voici notre script initial « bon » :

main.sh

#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
  sum=$((sum + i))
done
echo "Sum is: $sum"

Démonstration manuelle de Bisect

Supposons maintenant qu'un commit ultérieur ait modifié par erreur la boucle en seq 1 4, ce qui rend la somme incorrecte (10 au lieu de 6).

Nous commencerions par :

git bisect start

Puis nous marquerions notre HEAD actuel (où le bogue existe) comme mauvais :

git bisect bad HEAD

Et un commit plus ancien, dont le bon fonctionnement est connu, comme bon :

git bisect good <old_good_commit_hash>

Git vous guidera ensuite en extrayant des commits. Vous exécuteriez ./main.sh, vérifieriez si la somme vaut 6 ou 10, puis saisiriez git bisect good ou git bisect bad en conséquence.

Automatiser le processus de débogage

Tester chaque commit manuellement peut rester chronophage si le test est complexe. git bisect run vous permet d'automatiser cette tâche !

Vous fournissez un script qui se termine avec :

  • 0 (zéro) si le commit est bon.
  • 125 si le commit doit être ignoré.
  • Toute autre valeur non nulle (par exemple, 1) si le commit est mauvais.

Git exécutera ce script sur chaque commit testé jusqu'à ce que le bogue soit trouvé.

#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
  exit 0 # Good commit
else
  exit 1 # Bad commit
fi

Terminer votre recherche

Une fois que git bisect a identifié avec succès le premier commit mauvais, il vous indiquera le hachage du commit et son message.

Après avoir trouvé le responsable et compris le problème, il est essentiel de réinitialiser votre dépôt à son état d'origine, avant le début de la recherche dichotomique :

git bisect reset

Cette commande vous ramène au commit sur lequel vous vous trouviez lorsque vous avez lancé la recherche dichotomique et nettoie son état temporaire.

Vérification des connaissances sur Bisect

Vous venez d'exécuter git bisect start, de marquer votre HEAD actuel comme mauvais et un commit plus ancien comme bon. Git extrait un commit situé au milieu.

Vous exécutez vos tests et le bogue IS PRESENT dans ce commit central.

Récapitulatif de `git bisect`

Félicitations ! Vous avez appris à utiliser git bisect :

  • C'est un outil puissant pour trouver précisément le commit qui a introduit un bogue.
  • Il utilise une recherche binaire pour gagner en efficacité.
  • Vous définissez des commits « bons » (sans bogue) et « mauvais » (avec bogue).
  • Vous pouvez automatiser le processus de test avec git bisect run <script>.
  • N'oubliez jamais d'exécuter git bisect reset pour nettoyer la recherche une fois terminée !

Questions Fréquemment Posées

La leçon « Git Bisect pour le débogage » est-elle gratuite ?

Oui — le texte complet de « Git Bisect pour le débogage » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Git & GitHub Professional Workflow, passe à CoddyKit PRO. Le cours Git & GitHub Professional Workflow comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Git Bisect pour le débogage » ?

Utilisez `git bisect` pour trouver efficacement la validation précise qui a introduit un bug et gagner du temps lors du débogage. Tu pratiques Git & GitHub Professional Workflow avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Git & GitHub Professional Workflow ?

Aucune expérience préalable n'est requise. Git & GitHub Professional Workflow sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Git Bisect pour le débogage » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Git & GitHub Professional Workflow ?

Oui. Chaque leçon Git & GitHub Professional Workflow inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Git Reflog et récupération de l’historique
  2. Git Bisect pour le débogage
  3. Maintenance et nettoyage des dépôts
  4. Réécrire l’historique avec git filter-repo
← Retour à Git & GitHub Professional Workflow