Menu
Coddy logo textTech

Git Bisect

Dernière mise à jour

git bisect trouve le commit qui a introduit un bug par recherche dichotomique. Vous lui indiquez un commit connu comme bon et un connu comme mauvais ; il extrait un commit à mi-chemin, vous le marquez good ou bad, et il divise la plage par deux à chaque fois - il identifie ainsi le coupable en quelques étapes, même parmi des milliers de commits.

Essayez ces commandes dans le terminal playground - un vrai shell dans votre navigateur, rien à installer.

git bisect fait une recherche dichotomique dans l'historique entre un bon et un mauvais commit, divisant la plage suspecte par deux à chaque étape.

Syntaxe

CommandWhat it does
git bisect startDémarre une session de bisect
git bisect badMarque le commit actuel comme mauvais
git bisect good <hash>Marque un commit connu comme bon
git bisect good / git bisect badMarque chaque commit testé
git bisect run ./test.shAutomatiser : exécute un test pour marquer chaque étape
git bisect resetTermine le bisect, revient à votre branche

Exemple concret

Trouver quel commit a cassé le build.

StepCommandResult
1git bisect startLance la recherche
2git bisect badLe commit actuel est cassé
3git bisect good v1.0Cet ancien tag fonctionnait
4Testez, puis good/badRépétez jusqu'à ce que Git nomme le commit

FAQ git bisect

Que fait git bisect ?
Il effectue une recherche dichotomique dans votre historique de commits pour trouver le commit exact qui a introduit un bug. Vous marquez un commit comme good et un autre comme bad ; Git extrait à plusieurs reprises le point médian pour que vous le testiez, divisant la plage de recherche par deux à chaque fois jusqu'à identifier le premier commit fautif.
Comment utiliser git bisect ?
Exécutez git bisect start, marquez l'état cassé actuel avec git bisect bad, et un commit connu comme fonctionnel avec git bisect good <hash>. Git extrait un point médian ; testez-le et exécutez git bisect good ou git bisect bad. Répétez jusqu'à ce que Git signale le premier commit fautif, puis exécutez git bisect reset.
Puis-je automatiser git bisect ?
Oui. git bisect run <script> exécute votre script à chaque étape - le script doit se terminer avec 0 pour un bon commit et avec une valeur non nulle pour un mauvais (les lanceurs de tests conviennent bien). Git effectue alors le bisect automatiquement sans que vous ayez à marquer chaque commit à la main, et affiche le commit fautif à la fin.
Comment terminer un bisect ?
Exécutez git bisect reset pour terminer la session et revenir à la branche et au commit sur lesquels vous étiez avant de commencer. Faites-le que vous ayez trouvé le commit fautif ou non - cela nettoie l'état temporaire du bisect.
Puis-je m'entraîner en ligne ?
Oui. Ouvrez le terminal playground pour exécuter git bisect dans un vrai shell dans votre navigateur - rien à installer. Le cours Git interactif et gratuit de Coddy couvre aussi l'inspection de l'historique étape par étape.
Coddy programming languages illustration

Apprenez Git avec Coddy

COMMENCER