Git Bisect för felsökning
Använd `git bisect` för att effektivt hitta den specifika commit som introducerade en bugg och spara värdefull felsökningstid.
Git Bisect för felsökning är en gratis lektion i Professionellt arbetsflöde med Git och GitHub 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 Professionellt arbetsflöde med Git och GitHub, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Professionellt arbetsflöde med Git och GitHub innehåller totalt 4 lektioner.
Hitta buggar snabbare med Git
Felsökning kan vara svårt. Ibland uppstår en bugg utan att du vet vilken ändring som orsakade den.
git bisect är ett kraftfullt Git-kommando som hjälper dig att hitta exakt vilken commit som introducerade en bugg. Det använder en binärsökningsalgoritm för att snabbt begränsa sökningen bland tusentals commits.
Den binära sökningens kraft
Föreställ dig att projektet har 100 commits och att en bugg uppstod någonstans mellan den första och den sista. Att kontrollera var och en manuellt går långsamt!
git bisect fungerar som en ”gissa talet”-lek:
- Du anger en ”good”-commit, där buggen inte fanns.
- Du anger en ”bad”-commit, där buggen finns.
- Git väljer en commit ungefär i mitten och ber dig testa den.
- Du markerar den som ”good” eller ”bad”, och Git halverar sökområdet.
Nu börjar vi sökningen!
För att börja måste du tala om för Git att du startar en bisect-session. Det här kommandot initierar processen:
git bisect start
När sessionen har startat anger du en känd ”bad”-commit, där buggen finns, och en känd ”good”-commit, där buggen definitivt inte fanns.
Ofta är den ”bad”-commit din aktuella HEAD, medan en ”good”-commit kan vara en äldre release-tagg eller en commit från några dagar tillbaka.
Markera commit-gränserna
När du har startat git bisect definierar du sökintervallet:
- Bad commit: Detta är en commit där du vet att buggen finns. Använd
git bisect bad <commit-hash>eller baragit bisect badom det är din aktuellaHEAD. - Good commit: Detta är en commit där du vet att buggen INTE fanns. Använd
git bisect good <commit-hash>.
Git checkar sedan automatiskt ut en commit i mitten av detta intervall.
Testa och begränsa sökningen
När du har markerat dina good- och bad-commits checkar Git automatiskt ut en commit i mitten av intervallet. Din uppgift är att testa koden i den utcheckade committen.
- Om buggen FINNS, skriver du
git bisect bad. - Om buggen INTE FINNS, skriver du
git bisect good.
Git väljer sedan en annan commit i mitten av det återstående intervallet. Du upprepar detta tills Git hittar den första ”bad”-committen.
Simulera när en bugg introduceras
Föreställ dig en enkel ”bugg” i ett skript. Vi simulerar en projekthistorik där ett litet fel introducerades.
Här är vårt ursprungliga ”good”-skript:
main.sh
#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
sum=$((sum + i))
done
echo "Sum is: $sum"Manuell genomgång av Bisect
Anta nu att en senare commit råkade ändra loopen till seq 1 4, vilket gör summan felaktig (10 i stället för 6).
Vi börjar så här:
git bisect start
Markera sedan aktuell HEAD, där buggen finns, som bad:
git bisect bad HEAD
Och en äldre, fungerande commit som good:
git bisect good <old_good_commit_hash>
Git vägleder dig sedan genom att checka ut commits. Du kör ./main.sh, ser om summan är 6 eller 10 och skriver sedan git bisect good eller git bisect bad beroende på resultatet.
Automatisera felsökningsprocessen
Att testa varje commit manuellt kan fortfarande ta tid om testet är komplext. Med git bisect run kan du automatisera detta!
Du anger ett skript som avslutas med:
0(noll) om committen är good.125om committen ska hoppas över.- Vilket annat värde som helst som inte är noll (till exempel
1) om committen är bad.
Git kör skriptet på varje testad commit tills buggen hittas.
#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
exit 0 # Good commit
else
exit 1 # Bad commit
fiSlutför sökningen
När git bisect har identifierat den första bad-committen visar Git dess commit-hash och meddelande.
När du har hittat den skyldiga committen och förstått problemet är det viktigt att återställa repositoryt till dess ursprungliga tillstånd innan bisect startade:
git bisect reset
Det här kommandot tar dig tillbaka till committen du befann dig på när du startade bisect och rensar det tillfälliga bisect-tillståndet.
Testa dina Bisect-kunskaper
Du har precis kört git bisect start, markerat aktuell HEAD som bad och en äldre commit som good. Git checkar ut en commit i mitten.
Du kör dina tester och buggen FINNS i den här committen i mitten.
`git bisect` Sammanfattning
Grattis! Du har lärt dig att använda git bisect:
- Det är ett kraftfullt verktyg för att hitta exakt vilken commit som introducerade en bugg.
- Det använder binärsökning för att vara effektivt.
- Du definierar ”good”-commits, där buggen inte finns, och ”bad”-commits, där buggen finns.
- Du kan automatisera testprocessen med
git bisect run <script>. - Kom alltid ihåg att köra
git bisect resetför att städa upp efter sökningen!
Lär dig Professionellt arbetsflöde med Git och GitHub 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 ”Git Bisect för felsökning” gratis?
Ja – hela texten till ”Git Bisect för felsökning” 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 Professionellt arbetsflöde med Git och GitHub, kan Ni uppgradera till CoddyKit PRO. Kursen i Professionellt arbetsflöde med Git och GitHub innehåller totalt 4 lektioner.
Vad lär jag mig i ”Git Bisect för felsökning”?
Använd `git bisect` för att effektivt hitta den specifika commit som introducerade en bugg och spara värdefull felsökningstid. Ni övar på Professionellt arbetsflöde med Git och GitHub 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 Professionellt arbetsflöde med Git och GitHub?
Du behöver inga förkunskaper. Utbildningen i Professionellt arbetsflöde med Git och GitHub 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 ”Git Bisect för felsökning”?
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 Professionellt arbetsflöde med Git och GitHub-lektionen?
Ja. Varje Professionellt arbetsflöde med Git och GitHub-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
- Git Reflog och återställning av historik
- Git Bisect för felsökning
- Underhåll och städning av repositories
- Skriva om historiken med git filter-repo