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

Lo que lograrás

Usarás git bisect con un script de test automatizado para identificar el commit exacto que introdujo una regresión.

Configurar un sandbox con un bug plantado

mkdir bisect-tutorial && cd bisect-tutorial
git init

cat > calc.js <<'EOF'
function add(a, b) { return a + b; }
module.exports = { add };
EOF
git add calc.js && git commit -m "Initial calc"

for i in 1 2 3 4 5 6 7 8 9 10; do
  echo "// touched: $i" >> calc.js
  git commit -am "Tweak $i"
done

Escribir un reproductor

cat > test.js <<'EOF'
const { add } = require('./calc');
if (add(2, 3) !== 5) {
  console.error('FAIL: add(2,3) should be 5');
  process.exit(1);
}
EOF

Bisect manual

git bisect start
git bisect bad HEAD
git bisect good HEAD~12
node test.js
git bisect good
git bisect bad

Reset

git bisect reset

Bisect automatizado

git bisect start HEAD HEAD~12
git bisect run node test.js

Saltar commits no probables

git bisect skip

Personalizar términos

git bisect start --term-old=fast --term-new=slow
git bisect slow HEAD
git bisect fast v2.4.0

Qué hace que bisect funcione bien

  • Commits atómicos.
  • Tests reproducibles.
  • Bug determinista.

Ejemplo del mundo real

git bisect start HEAD v3.0.0
git bisect run ./scripts/reproduce-issue.sh

El modelo mental

Bisect realiza búsqueda binaria a través de los commits. log2(N) verificaciones identifican el primer commit malo.