Par Anonyme (non vérifié) , 29 avril 2026

Ce que vous accomplirez

Vous utiliserez git bisect avec un script de test automatisé pour identifier le commit exact qui a introduit une régression.

Configurer un sandbox avec un bug planté

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

Écrire un reproducteur

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 manuel

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 automatisé

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

Sauter les commits non-testables

git bisect skip

Personnaliser les termes

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

Ce qui rend bisect efficace

  • Commits atomiques.
  • Tests reproductibles.
  • Bug déterministe.

Exemple du monde réel

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

Le modèle mental

Bisect effectue une recherche binaire à travers les commits. log2(N) vérifications identifient le premier mauvais commit.