Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git bisect start
git bisect good <commit>
git bisect bad <commit>
git bisect run <script>
git bisect reset

Descrizione

Il comando git bisect esegue una ricerca binaria attraverso la storia dei commit per identificare esattamente quale commit ha introdotto un bug. Inizi marcando un commit noto-cattivo (spesso HEAD) e uno noto-buono (forse un tag di rilascio), poi Git fa checkout di un punto intermedio e ti chiede di testare. Rispondi "good" o "bad", Git restringe il range, e ripeti finché il commit incriminato non viene trovato.

Se hai un test automatizzato o un riproduttore, git bisect run automatizza l'intero processo — Git invoca il tuo script ad ogni passo. Bisecting attraverso mille commit tipicamente richiede circa dieci iterazioni.

Nell'uso quotidiano, git bisect si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

SottocomandoDescrizione
startInizia una sessione di bisect.
good / badMarca il commit corrente (o specificato).
skipMarca un commit come non testabile.
run <cmd>Automatizza eseguendo un comando (exit 0 = good, non-zero = bad).
resetTermina la sessione e torna al branch originale.
logMostra il log di bisect.
visualizeMostra i commit sospetti rimanenti.

Esempi

git bisect start
git bisect bad HEAD
git bisect good v1.5.0
# Git fa checkout di un punto intermedio; testalo, poi:
git bisect good   # oppure: git bisect bad

git bisect run npm test
# Completamente automatizzato: i codici di uscita di npm test guidano la ricerca

git bisect reset
# Torna al tuo branch originale

Errori comuni

Dimenticare di fare git bisect reset ti lascia in uno stato detached HEAD. Marcare un commit come "good" quando il bug è intermittente porta bisect fuori strada — usa invece skip. Assicurati che il tuo script di test ritorni il codice di uscita 125 per segnalare "skip" se la build stessa è rotta a quel commit.

Comandi correlati

git log, git blame, git show, git checkout