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 DevOps Bootcamp 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 DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp 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 simplementgit bisect bads'il s'agit de votreHEADactuel. - 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.125si 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
fiTerminer 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 resetpour 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 DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp 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 DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp 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
- Git Reflog et récupération de l’historique
- Git Bisect pour le débogage
- Maintenance et nettoyage des dépôts
- Réécrire l’historique avec git filter-repo