Menu
Coddy logo textTech

Git Bisect

Ultimo aggiornamento

git bisect trova il commit che ha introdotto un bug con una ricerca binaria. Gli indichi un commit che sai funzionare e uno che sai rotto; lui fa il checkout di un commit a metà strada, tu lo segni come good o bad, e a ogni passo l'intervallo si dimezza. Così individua il colpevole in pochi passaggi anche tra migliaia di commit.

Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.

git bisect esegue una ricerca binaria nella cronologia tra un commit buono e uno cattivo, dimezzando l'intervallo sospetto a ogni passo.

Sintassi

ComandoCosa fa
git bisect startAvvia una sessione di bisect
git bisect badSegna il commit corrente come difettoso
git bisect good <hash>Segna un commit che funziona
git bisect good / git bisect badSegna ogni commit testato
git bisect run ./test.shAutomatizza: esegue un test per segnare ogni passo
git bisect resetTermina il bisect e torna al tuo branch

Esempio pratico

Trova il commit che ha rotto la build.

PassoComandoRisultato
1git bisect startAvvia la ricerca
2git bisect badIl commit corrente è rotto
3git bisect good v1.0Questo vecchio tag funzionava
4Testa, poi good/badRipeti finché Git non indica il commit

Domande frequenti su git bisect

Cosa fa git bisect?
Esegue una ricerca binaria nella cronologia dei commit per trovare il commit esatto che ha introdotto un bug. Segni un commit come good e uno come bad; Git fa ripetutamente il checkout del punto intermedio perché tu lo testi, dimezzando ogni volta l'intervallo finché non individua il primo commit difettoso.
Come si usa git bisect?
Esegui git bisect start, segna lo stato attuale rotto con git bisect bad e un commit funzionante con git bisect good <hash>. Git fa il checkout di un punto intermedio; testalo ed esegui git bisect good o git bisect bad. Ripeti finché Git non indica il primo commit difettoso, poi esegui git bisect reset.
Posso automatizzare git bisect?
Sì. git bisect run <script> esegue il tuo script a ogni passo: lo script deve uscire con 0 per un commit buono e con un valore diverso da zero per uno difettoso (i test runner vanno benissimo). Git allora procede da solo, senza che tu debba segnare ogni commit a mano, e alla fine stampa il commit responsabile.
Come termino un bisect?
Esegui git bisect reset per chiudere la sessione e tornare al branch e al commit su cui eri prima di iniziare. Fallo sia che tu abbia trovato il commit difettoso sia che non l'abbia trovato: ripulisce lo stato temporaneo del bisect.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire git bisect in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come esaminare la cronologia passo dopo passo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA