TL;DR — Resumen Rápido

Domine técnicas avanzadas de Git para mantener un historial limpio, automatizar tareas y depurar regresiones con rebase, bisect y hooks.

Más Allá de lo Básico en Git

Mientras git commit y git push son suficientes para proyectos individuales, colaborar en bases de código grandes requiere dominar herramientas que reducen conflictos de fusión, automatizan la calidad y acortan el tiempo de depuración.


1. Git Rebase: Manteniendo un Historial Lineal

Rebase mueve o combina una secuencia de commits a una nueva base. En lugar de usar git merge main, puedes hacer rebase de tu rama feature sobre la versión más reciente de main.

Cómo Hacer Rebase

git checkout feature
git rebase main

Regla de Oro: Nunca hagas rebase en una rama pública compartida.

Rebase Interactivo (Squash)

Para unificar commits “WIP” (Work In Progress) en uno solo antes de crear un PR:

git rebase -i HEAD~5

Cambie pick por squash en el editor para fusionarlos.


2. Git Bisect: El Superpoder de Depuración

Git Bisect realiza una búsqueda binaria en el historial para encontrar el commit exacto que introdujo un error.

  1. Iniciar: git bisect start
  2. Marcar el estado actual como roto: git bisect bad
  3. Marcar un commit antiguo que sí funciona: git bisect good <hash>
  4. Git cambiará a un commit en el medio. Pruébelo y marque git bisect good o git bisect bad.
  5. Repita hasta que Git devuelva el commit culpable.
  6. Limpiar: git bisect reset

3. Git Hooks: Automatizando la Calidad

Los ganchos (hooks) son scripts que Git ejecuta antes o después de eventos como commits o pushes. Se guardan en .git/hooks.

Ejemplo: Hook pre-commit

Evita que se envíe código incompleto o que falle las pruebas.

#!/bin/sh
# Archivo: .git/hooks/pre-commit
# Hacer ejecutable con: chmod +x .git/hooks/pre-commit

echo "Ejecutando pruebas..."
npm test

if [ $? -ne 0 ]; then
  echo "¡Las pruebas deben pasar antes del commit!"
  exit 1
fi

Resumen

  • Use Rebase para historiales limpios (pero nunca en ramas públicas).
  • Use Bisect para encontrar regresiones matemáticamente.
  • Use Hooks para imponer calidad antes de cada commit.

Artículos Relacionados