git bisect
Hitta exakt vilken commit som introducerade en bugg — utan att manuellt testa hundra commits.
git bisect gör en binärsökning i historiken. Du talar om för Git “det fungerade i commit X, det är trasigt nu” — sedan testar den commits halvvägs och frågar om det fungerar eller inte. Processen halverar antalet möjliga kandidater varje steg. 100 commits → 7 steg.
Starta en bisect-session
git bisect startgit bisect bad # nuvarande commit är trasiggit bisect good v1.0 # den här versionen fungeradeGit checkar nu ut en commit halvvägs i historiken. Testa manuellt, rapportera resultatet:
git bisect good # den här är OK — buggen kom senaregit bisect bad # den här är trasig — buggen kom tidigareUpprepa. Efter ett antal steg:
a3f8c21 is the first bad commitAuthor: Pelle Persson <pelle@example.com>Date: Thu Sep 14 10:23:45 2026
feat: lägg till rabattkod-validering i kassanNu vet du var buggen introducerades. Läs committen med git show a3f8c21.
Avsluta
git bisect reset # återgår till HEAD, sessionen rensasGlöm inte att köra det här — annars är du kvar i “detached HEAD”-läge.
Automatiserad bisect
Om du har ett test som returnerar 0 vid framgång och 1 vid fel kan du automatisera hela processen:
git bisect startgit bisect badgit bisect good v1.0git bisect run dotnet test --filter "TestRabattkod"Git kör testet automatiskt för varje kandidat och hittar den buggiga committen utan att du behöver göra något.
Praktiskt scenario
Du deployade igår kväll och allt fungerade. Idag är kassan trasig. Historiken har 80 commits sedan igårkvällens deploy:
git bisect startgit bisect bad HEADgit bisect good deploy-2026-09-16Sju frågor från Git senare vet du exakt vilken commit som förstörde det.