Menu
Coddy logo textTech

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.

git bisect hace una búsqueda binaria en el historial entre un commit bueno y uno malo, reduciendo el rango sospechoso a la mitad en cada paso.

Sintaxis

CommandWhat it does
git bisect startInicia una sesión de bisect
git bisect badMarca el commit actual como defectuoso
git bisect good <hash>Marca un commit que sabes que funciona
git bisect good / git bisect badMarca cada commit probado
git bisect run ./test.shAutomatiza: ejecuta una prueba para marcar cada paso
git bisect resetTermina bisect, vuelve a tu rama

Ejemplo práctico

Encuentra qué commit rompió la compilación.

StepCommandResult
1git bisect startInicia la búsqueda
2git bisect badEl commit actual está roto
3git bisect good v1.0Esta etiqueta antigua funcionaba
4Prueba, luego good/badRepite 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.
Coddy programming languages illustration

Aprende Git con Coddy

COMENZAR