Felsökning med Git Bisect
Använd `git bisect` för att effektivt hitta exakt vilken commit som introducerade ett fel och spara värdefull felsökningstid.
Felsökning med Git Bisect är en gratis lektion i Avancerad Git: monorepon, submoduler och arbetsflöden på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Avancerad Git: monorepon, submoduler och arbetsflöden, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Avancerad Git: monorepon, submoduler och arbetsflöden innehåller totalt 4 lektioner.
Vad är Git Bisect?
Föreställ er att en bugg dyker upp i projektet, men att ni inte vet vilken av de senaste ändringarna som orsakade den. Att manuellt kontrollera varje commit kan ta väldigt lång tid!
git bisect är ett kraftfullt Git-kommando som använder en binärsökningsalgoritm för att snabbt hitta exakt vilken commit som introducerade en bugg.
Fördelarna med binärsökning
Hur kan git bisect arbeta så snabbt? Det liknar en lek med ”varmare eller kallare” genom er commit-historik.
- Ni anger en commit som ni vet är dålig (den innehåller buggen).
- Ni anger en commit som ni vet är bra (från innan buggen fanns).
- Git väljer en commit ungefär mitt i intervallet och ber er testa den.
- Utifrån ert svar halverar Git sökområdet och upprepar processen tills den skyldiga commit hittas.
Påbörja er bisect-sökning
Börja med att tala om för Git att ni startar en bisect-session. Markera sedan den kända ”dåliga” committen (med buggen) och en känd ”bra” commit (som fungerar).
Ni kan använda commit-hashar, grennamn eller taggar.
git bisect start
git bisect bad HEAD
git bisect good <known_good_commit_hash>Den iterativa processen: testa och markera
När ni har angett era bra och dåliga commits checkar Git automatiskt ut en commit mitt i intervallet. Er uppgift är att testa koden i denna commit.
- Om buggen finns, markerar ni den som dålig.
- Om buggen INTE finns, markerar ni den som bra.
Git går sedan vidare till nästa commit och halverar det återstående sökområdet.
Markera en commit
När ni har testat den utcheckade committen använder ni följande kommandon för att tala om för Git om den är bra eller dålig:
- Markera den aktuella committen som dålig:
git bisect bad - Markera den aktuella committen som bra:
git bisect good
Git checkar sedan automatiskt ut nästa commit som ska testas.
git bisect bad
# OR
git bisect goodAvgränsa problemet
Ni upprepar processen ”testa och markera”. För varje steg kommer git bisect närmare den enda commit som introducerade buggen. Det går mycket snabbare än att kontrollera commits en i taget!
För ett intervall på 100 commits krävs högst 7 tester (log2(100) ≈ 6,64).
Den skyldiga är hittad!
Till slut avgränsar git bisect intervallet till en enda commit. Därefter rapporterar Git den första hittade ”dåliga” committen, alltså committen som introducerade buggen!
När buggen har hittats är det viktigt att avsluta bisect-sessionen, så att repositoriet återgår till sitt ursprungliga tillstånd (vanligtvis den gren ni befann er på när ni började).
git bisect resetHantera commits som inte kan testas
Ibland kan git bisect hamna på en commit som inte går att testa (till exempel för att den inte kompilerar eller för att beroenden är trasiga). I sådana fall kan ni tala om för Git att hoppa över den:
git bisect skip
Git väljer då en annan commit att testa och ser till att den överhoppade committen inte ingår i det möjliga intervallet för buggen.
git bisect skipAutomatisera med Git Bisect Run
För ännu snabbare felsökning kan ni automatisera testprocessen med git bisect run. Kommandot tar ett skript som utför testet och avslutas med specifika koder:
0: Committen är bra.(utom1-127125): Committen är dålig.125: Committen ska hoppas över (till exempel om den inte kan byggas).
Git kör sedan skriptet automatiskt för varje commit tills buggen hittas.
#!/bin/bash
# Example test script for git bisect run
# Replace 'make test' with your actual test command
if make test;
then
exit 0 # Tests passed, commit is good
else
exit 1 # Tests failed, commit is bad
fiKontroll av bisect-arbetsflödet
Vilka av följande kommandon är viktiga när ni manuellt använder git bisect för att hitta en bugg?
Felsökningen är uppgraderad!
Ni behärskar git bisect! Det här kraftfulla verktyget gör felsökning från ett tidskrävande arbete till en effektiv och systematisk process med binärsökning.
- Börja med
git bisect startoch ange bra och dåliga commits. - Testa och markera commits som
goodellerbad. - Använd
git bisect skipför commits som inte kan testas. - Automatisera med
git bisect runför snabb felsökning utan manuellt arbete. - Avsluta alltid med
git bisect reset.
Lycka till med bugjakten!
Lär dig Avancerad Git: monorepon, submoduler och arbetsflöden med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Felsökning med Git Bisect” gratis?
Ja – hela texten till ”Felsökning med Git Bisect” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Avancerad Git: monorepon, submoduler och arbetsflöden, kan Ni uppgradera till CoddyKit PRO. Kursen i Avancerad Git: monorepon, submoduler och arbetsflöden innehåller totalt 4 lektioner.
Vad lär jag mig i ”Felsökning med Git Bisect”?
Använd `git bisect` för att effektivt hitta exakt vilken commit som introducerade ett fel och spara värdefull felsökningstid. Ni övar på Avancerad Git: monorepon, submoduler och arbetsflöden med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Avancerad Git: monorepon, submoduler och arbetsflöden?
Du behöver inga förkunskaper. Utbildningen i Avancerad Git: monorepon, submoduler och arbetsflöden på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Felsökning med Git Bisect”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Avancerad Git: monorepon, submoduler och arbetsflöden-lektionen?
Ja. Varje Avancerad Git: monorepon, submoduler och arbetsflöden-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Återställa förlorade commits och brancher
- Felsökning med Git Bisect
- Optimera Git-kodarkivens prestanda
- Rädda arbete med Reflog och Stash