El comando de Git que detecta Bugs en minutos


El comando de Git detecta Bugs en minutos

Feliz Lunes, fellow dev 👋

¿Alguna vez te has pasado toda la mañana tratando de averiguar por qué tu proyecto se ha caído durante la noche, sin previo aviso?

De pronto, tu API comienza a lanzar errores 500, o tu frontend se niega a cargar…

¿Y lo peor de todo?

Hay cientos de commits entre el estado en el que todo estaba funcionando, y en el que todo se ha roto.

Entonces, ¿cómo puedes saber cuál de esos commits causó el bug?

El comando que necesitas

Bien, pues hoy me alegra traerte buenas noticias 😄 Hoy, vamos a ver cómo utilizar Git Bisect para resolver este lío en cuestión de minutos.

🤔 ¿Qué es exactamente Git Bisect?

Git bisect es un comando integrado que utiliza búsqueda binaria en tu historial de commits para encontrar el commit exacto que introdujo un bug.

En lugar de revisar cada commit a mano, Git va reduciendo el espacio de búsqueda a la mitad, hasta identificar cuál ha sido el commit problemático.

Es decir: si tienes 200 commits por revisar, eso significa que solo necesitas probar unas 8 veces (log₂(200) ≈ 8).

👉 Así es como funciona...

  1. Indícale a Git dónde has encontrado el bug → marcando un commit como "bad".
  2. Indícale a Git un punto en el history donde todo funcionaba bien → marcalo como "good".
  3. Git hará automáticamente checkout de un commit a la mitad del espacio de búsqueda.
  4. Prueba ese commit. (¿Ha aparecido el bug?).
    • En caso de que sí → git bisect bad
    • En caso de que no → git bisect good
  5. Git repite el proceso hasta encontrar el primer "bad" commit . 🔁
  6. Ejecuta git bisect reset para volver a tu rama original.

💡 Un ejemplo práctico

Imagina que tus tests pasaban en el commit a1b2c3 la semana pasada, pero que el HEAD de hoy está roto.

# Start bisect
git bisect start

# Marca el "bad" commit (normalmente HEAD)
git bisect bad HEAD

# Marca un "good" commit conocido
git bisect good a1b2c3

Git ahora hace checkout de un commit a la mitad del espacio de búsqueda (en el grafo de commits).

Entonces, ejecutas tus tests (o revisas manualmente si existe el bug).

Luego, le indicas a Git:

git bisect good # si funciona
git bisect bad # si está roto
git bisect skip # si no puede probarse (ej. no compila)

Repites este proceso. Tras unas rondas, Git imprimirá:


Ese es el culpable — es el primer commit que introdujo el bug.

Finalmente, ejecuta:

git bisect reset

para volver a tu rama original.

------------------------------------------------------------

💪 Simple, ¿verdad?

Una vez conoces Git Bisect, nunca más volverás a tener que revisar commits uno por uno.

¡Pruébalo hoy en tu repo, y cuéntame la diferencia!

Nos vemos pronto,

Patri

Growth™ by DevAccelerator

Recibe mis píldoras diarias sobre tendencias de contratación Tech en el mercado laboral internacional, tips sobre procesos de selección, y mucho más!

Read more from Growth™ by DevAccelerator

BIG TECH, ¿una ilusión? Lo Que REALMENTE Estás Persiguiendo Feliz Viernes, fellow dev. 👋 Big Tech es la joya de la corona. Es ese conjunto de empresas al que cualquier profesional tecnológico que se precie intenta aspirar. Ahora bien: ¿Es la única alternativa? ¿Qué consecuencias implica en tu carrera a LARGO plazo? ¿Cómo puedes acceder a ellas? Si quieres saber todo ello y mucho más, quiero compartir mi nuevo vídeo contigo… BIG TECH, ¿una ilusión? Lo Que REALMENTE Estás Persiguiendo Ver el...

ESTOY FELIZ!!! Reflexiones de nuestra primera DEMO en DevAccelerator™ 🚀🤘 Feliz Jueves, fellow dev 👋 Lo de ayer fue una locura 🤯 Creo que nunca había sentido de una forma tan intensa el enorme poder que tiene construir una comunidad. Por si no sabes a qué me estoy refiriendo, te pongo en contexto: Durante los últimos 2 meses en DevAccelerator™, y por primera vez en nuestra - ya no tan breve - trayectoria, hemos lanzado una nueva iniciativa: The Startup Experience™ by DevAccelerator™ A lo largo...

Así es como soluciono cualquier bug con un método de 3 pasos (y cómo tú también puedes hacerlo) Hola, fellow dev 👋 Lo cierto es que... Solucionar bugs solía ser la parte más frustrante de mi trabajo como Software Engineer. Al principio de mi carrera, podía llegar a pasarme horas mirando un trozo de código roto, sin tener ni idea de por dónde empezar. Probaba cosas al azar esperando tener suerte. ¿El resultado? No obtenía resultados. Sin embargo, todo cambió cuando empecé a aplicar un enfoque...