Git Bisect
Última actualización
git bisect encuentra el commit que introdujo un error mediante búsqueda binaria. Le indicas un commit que sabes que funciona y otro que sabes que falla; extrae un commit a mitad de camino, lo marcas como good o bad, y reduce el rango a la mitad cada vez - así identifica al culpable en unos pocos pasos incluso entre miles de commits.
Prueba estos comandos en el terminal playground - una shell real en tu navegador, sin nada que instalar.
Sintaxis
| Command | What it does |
|---|---|
git bisect start | Inicia una sesión de bisect |
git bisect bad | Marca el commit actual como defectuoso |
git bisect good <hash> | Marca un commit que sabes que funciona |
git bisect good / git bisect bad | Marca cada commit probado |
git bisect run ./test.sh | Automatiza: ejecuta una prueba para marcar cada paso |
git bisect reset | Termina bisect, vuelve a tu rama |
Ejemplo práctico
Encuentra qué commit rompió la compilación.
| Step | Command | Result |
|---|---|---|
| 1 | git bisect start | Inicia la búsqueda |
| 2 | git bisect bad | El commit actual está roto |
| 3 | git bisect good v1.0 | Esta etiqueta antigua funcionaba |
| 4 | Prueba, luego good/bad | Repite hasta que Git nombre el commit |
Preguntas frecuentes sobre git bisect
¿Qué hace git bisect?
Realiza una búsqueda binaria en el historial de commits para encontrar el commit exacto que introdujo un error. Marcas un commit como good y otro como bad; Git extrae repetidamente el punto medio para que lo pruebes, reduciendo el rango de búsqueda a la mitad cada vez hasta que identifica el primer commit defectuoso.
¿Cómo uso git bisect?
Ejecuta
git bisect start, marca el estado roto actual con git bisect bad y un commit que sabes que funciona con git bisect good <hash>. Git extrae un punto medio; pruébalo y ejecuta git bisect good o git bisect bad. Repite hasta que Git informe del primer commit defectuoso, luego ejecuta git bisect reset.¿Puedo automatizar git bisect?
Sí.
git bisect run <script> ejecuta tu script en cada paso - el script debe salir con 0 para un commit correcto y con un valor distinto de cero para uno defectuoso (los ejecutores de pruebas funcionan bien). Git entonces hace bisect automáticamente sin que marques cada commit a mano, e imprime el commit culpable al final.¿Cómo termino un bisect?
Ejecuta
git bisect reset para terminar la sesión y volver a la rama y al commit en los que estabas antes de empezar. Hazlo hayas encontrado o no el commit defectuoso - limpia el estado temporal de bisect.¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar
git bisect en una shell real en tu navegador - sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre cómo inspeccionar el historial paso a paso.