Professionelt Git- og GitHub-arbejdsforløb · Lektion

Git Bisect til fejlfinding

Brug `git bisect` til effektivt at finde det specifikke commit, der introducerede en fejl, og spar værdifuld tid på fejlfinding.

Lektion 2 af 411 trin

Git Bisect til fejlfinding er en gratis Professionelt Git- og GitHub-arbejdsforløb-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Professionelt Git- og GitHub-arbejdsforløb, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Professionelt Git- og GitHub-arbejdsforløb-kurset indeholder 4 lektioner i alt.

Find fejl hurtigere med Git

Fejlfinding kan være vanskelig. Nogle gange opstår der en fejl, uden at du ved, hvilken ændring der forårsagede den.

git bisect er en effektiv Git-kommando, der hjælper dig med at finde den præcise commit, som introducerede en fejl. Den bruger en binær søgealgoritme til hurtigt at indsnævre tusindvis af commits.

Den binære søgnings styrke

Forestil dig, at dit projekt har 100 commits, og at der opstod en fejl et sted mellem den første og den sidste. Det er langsomt at kontrollere hver enkelt manuelt!

git bisect fungerer som en leg, hvor du skal "gætte tallet":

  • Du fortæller Git, hvilken commit der er "god" (hvor fejlen ikke var til stede).
  • Du fortæller Git, hvilken commit der er "dårlig" (hvor fejlen er til stede).
  • Git vælger en commit omtrent i midten og beder dig teste den.
  • Du markerer den som "god" eller "dårlig", og Git halverer søgeområdet.

Lad os begynde søgningen!

For at begynde skal du fortælle Git, at du starter en bisect-session. Denne kommando initialiserer processen:

git bisect start

Efter starten angiver du en kendt "dårlig" commit (hvor fejlen findes) og en kendt "god" commit (hvor fejlen helt sikkert ikke fandtes).

Ofte er den "dårlige" commit din aktuelle HEAD, og en "god" commit kan være et ældre udgivelsesmærke eller en commit fra for nogle dage siden.

Markér commit-grænserne

Når du har startet git bisect, definerer du dit søgeområde:

  • Dårlig commit: Dette er en commit, hvor du ved, at fejlen findes. Brug git bisect bad <commit-hash> eller blot git bisect bad, hvis det er din aktuelle HEAD.
  • God commit: Dette er en commit, hvor du ved, at fejlen IKKE fandtes. Brug git bisect good <commit-hash>.

Git skifter derefter automatisk til en commit midt i dette område.

Test og indsnævring

Når du har markeret dine gode og dårlige commits, skifter Git automatisk til en commit midt i området. Din opgave er at teste koden i denne commit.

  • Hvis fejlen ER til stede, skal du skrive git bisect bad.
  • Hvis fejlen IKKE er til stede, skal du skrive git bisect good.

Git vælger derefter endnu en commit i midten af det resterende område. Du gentager dette, indtil Git finder den første "dårlige" commit.

Simulér, hvordan en fejl opstår

Lad os forestille os en simpel "fejl" i et script. Vi simulerer en projekthistorik, hvor der blev introduceret en lille fejl.

Her er vores oprindelige "gode" script:

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"

Manuel gennemgang af Bisect

Lad os nu sige, at en senere commit ved et uheld ændrede løkken til seq 1 4, så summen blev forkert (10 i stedet for 6).

Vi begynder sådan:

git bisect start

Derefter markerer vi vores aktuelle HEAD (hvor fejlen findes) som dårlig:

git bisect bad HEAD

Og en ældre, kendt fungerende commit som god:

git bisect good <old_good_commit_hash>

Git guider dig derefter ved at skifte til forskellige commits. Du kører ./main.sh, ser om summen er 6 eller 10, og skriver derefter git bisect good eller git bisect bad efter behov.

Automatisér fejlfindingsprocessen

Det kan stadig være tidskrævende at teste hver commit manuelt, hvis testen er kompleks. git bisect run lader dig automatisere dette!

Du angiver et script, der afslutter med:

  • 0 (nul), hvis committen er god.
  • 125, hvis committen skal springes over.
  • En anden værdi, der er forskellig fra nul (f.eks. 1), hvis committen er dårlig.

Git kører dette script på hver testet commit, indtil fejlen er fundet.

#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
  exit 0 # Good commit
else
  exit 1 # Bad commit
fi

Afslut din søgning

Når git bisect har identificeret den første dårlige commit, fortæller den dig commit-hashen og dens meddelelse.

Når du har fundet årsagen og forstået problemet, er det vigtigt at nulstille dit repository til dets oprindelige tilstand fra før bisect-processen:

git bisect reset

Denne kommando bringer dig tilbage til den commit, du stod på, da du startede bisect, og rydder den midlertidige bisect-tilstand.

Test din viden om Bisect

Du har netop kørt git bisect start, markeret din aktuelle HEAD som dårlig og en ældre commit som god. Git skifter til en commit midt i området.

Du kører dine tests, og fejlen ER TIL STEDE i denne midterste commit.

`git bisect` – opsummering

Tillykke! Du har lært at bruge git bisect:

  • Det er et effektivt værktøj til at finde den præcise commit, som introducerede en fejl.
  • Det bruger binær søgning for at være effektivt.
  • Du definerer "gode" (fejlfrie) og "dårlige" (med fejl) commits.
  • Du kan automatisere testprocessen med git bisect run <script>.
  • Husk altid at køre git bisect reset for at rydde op efter din søgning!
Gratis at komme i gang

Lær Professionelt Git- og GitHub-arbejdsforløb med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Git Bisect til fejlfinding” gratis?

Ja — hele teksten til “Git Bisect til fejlfinding” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Professionelt Git- og GitHub-arbejdsforløb-kurset, skal du opgradere til CoddyKit PRO. Professionelt Git- og GitHub-arbejdsforløb-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Git Bisect til fejlfinding”?

Brug `git bisect` til effektivt at finde det specifikke commit, der introducerede en fejl, og spar værdifuld tid på fejlfinding. Du øver dig i Professionelt Git- og GitHub-arbejdsforløb med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Professionelt Git- og GitHub-arbejdsforløb?

Der kræves ingen tidligere erfaring. Professionelt Git- og GitHub-arbejdsforløb på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Git Bisect til fejlfinding”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Professionelt Git- og GitHub-arbejdsforløb-lektion?

Ja. Alle Professionelt Git- og GitHub-arbejdsforløb-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Git Reflog og gendannelse af historik
  2. Git Bisect til fejlfinding
  3. Vedligeholdelse og oprydning i repositories
  4. Omskriv historikken med git filter-repo
← Tilbage til Professionelt Git- og GitHub-arbejdsforløb