Recherche binaire dans l'historique
git bisect effectue une recherche binaire à travers les commits. Après log2(N) étapes, il identifie le premier mauvais commit.
Bisect manuel
git bisect start
git bisect bad HEAD
git bisect good v2.4.0
git bisect good # si le bug est absent
git bisect bad # si le bug est présent
git bisect reset
Bisect automatisé
git bisect start HEAD v2.4.0
git bisect run ./scripts/reproduce-bug.sh
Sauter les commits non-testables
git bisect skip
Bisect avec termes au-delà de good/bad
git bisect start --term-old=fast --term-new=slow
git bisect slow HEAD
git bisect fast v2.4.0
Ce qui rend bisect faisable
- Commits atomiques.
- Tests reproductibles.
- Bug déterministe.
Bisecter les merge commits
git bisect start --first-parent HEAD v2.4.0
Visualiser la progression
git bisect log
git bisect visualize