Professionellt arbetsflöde med Git och GitHub · Lektion

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.

Lektion 2 av 411 steg

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 bara git bisect bad om det är din aktuella HEAD.
  • 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.
  • 125 om 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
fi

Slutfö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 reset för att städa upp efter sökningen!
Gratis att börja

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

  1. Git Reflog och återställning av historik
  2. Git Bisect för felsökning
  3. Underhåll och städning av repositories
  4. Skriva om historiken med git filter-repo
← Tillbaka till Professionellt arbetsflöde med Git och GitHub