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.
Syntaxe
| Command | What it does |
|---|---|
git bisect start | Démarre une session de bisect |
git bisect bad | Marque le commit actuel comme mauvais |
git bisect good <hash> | Marque un commit connu comme bon |
git bisect good / git bisect bad | Marque chaque commit testé |
git bisect run ./test.sh | Automatiser : exécute un test pour marquer chaque étape |
git bisect reset | Termine le bisect, revient à votre branche |
Exemple concret
Trouver quel commit a cassé le build.
| Step | Command | Result |
|---|---|---|
| 1 | git bisect start | Lance la recherche |
| 2 | git bisect bad | Le commit actuel est cassé |
| 3 | git bisect good v1.0 | Cet ancien tag fonctionnait |
| 4 | Testez, puis good/bad | Ré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.