Por Anónimo (no verificado) , 29 Abril 2026

Sinopsis

git bisect start
git bisect good <commit>
git bisect bad <commit>
git bisect run <script>
git bisect reset

Descripción

El comando git bisect realiza una búsqueda binaria a través del historial de commits para identificar exactamente qué commit introdujo un bug. Empiezas marcando un commit conocido como malo (a menudo HEAD) y un commit conocido como bueno (quizás un tag de release), luego Git hace checkout de un punto medio y te pide probar. Respondes good o bad, Git reduce el rango y repites hasta encontrar el commit ofensor.

Si tienes un test automatizado o reproductor, git bisect run automatiza el proceso entero: Git invoca tu script en cada paso. Hacer bisect a través de mil commits típicamente toma alrededor de diez iteraciones.

En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.

Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.

Opciones comunes

SubcomandoDescripción
startBegin a bisect session.
good / badMark the current (or specified) commit.
skipMark a commit as untestable.
run <cmd>Automate by running a command (exit 0 = good, non-zero = bad).
resetEnd the session and return to the original branch.
logShow the bisect log.
visualizeShow remaining suspect commits.

Ejemplos

git bisect start
git bisect bad HEAD
git bisect good v1.5.0
# Git checks out a midpoint; test it, then:
git bisect good   # or: git bisect bad

git bisect run npm test
# Fully automated: npm test exit codes drive the search

git bisect reset
# Return to your original branch

Errores comunes

Forgetting to git bisect reset leaves you in a detached HEAD state. Marking a commit "good" when the bug is intermittent leads bisect astray — use skip instead. Make sure your test script returns exit code 125 to signal "skip" if the build itself is broken at that commit.

Comandos relacionados

git log, git blame, git show, git checkout