Búsqueda binaria por la historia
git bisect realiza una búsqueda binaria a través de los commits. Dile un commit conocido como bueno y otro como malo; revisa el punto medio y te pide marcarlo. Tras log2(N) pasos, identifica el primer commit malo.
Bisect manual
git bisect start
git bisect bad HEAD
git bisect good v2.4.0
git bisect good # si el bug está ausente
git bisect bad # si el bug está presente
git bisect reset
Bisect automatizado
git bisect start HEAD v2.4.0
git bisect run ./scripts/reproduce-bug.sh
Saltar commits no probables
git bisect skip
Bisect con términos más allá de good/bad
git bisect start --term-old=fast --term-new=slow
git bisect slow HEAD
git bisect fast v2.4.0
Qué hace viable a bisect
- Commits atómicos.
- Tests reproducibles.
- El bug es determinista.
Bisecting commits de merge
git bisect start --first-parent HEAD v2.4.0
Visualizar progreso
git bisect log
git bisect visualize