Feilsøking med Git Bisect
Bruk `git bisect` til effektivt å finne den nøyaktige commiten som introduserte en feil, og spar verdifull tid på feilsøking
Feilsøking med Git Bisect er en gratis leksjon i Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Git videregående: Monorepo, Submodules og arbeidsflyter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.
Hva er Git Bisect?
Se for Dem at det oppstår en feil i prosjektet, men at De ikke vet hvilken nylig endring som forårsaket den. Det kan være svært tidkrevende å kontrollere hver commit manuelt!
git bisect er en kraftig Git-kommando som bruker en binærsøkealgoritme til raskt å finne den nøyaktige commiten som introduserte en feil.
Fordelen med binærsøk
Hvordan kan git bisect arbeide så raskt? Det fungerer omtrent som en «varmt eller kaldt»-lek med commit-historikken.
- De forteller Git hvilken commit De vet er dårlig (den inneholder feilen).
- De forteller Git hvilken commit De vet er god (fra før feilen eksisterte).
- Git velger en commit omtrent midt i intervallet og ber Dem teste den.
- Basert på tilbakemeldingen Deres halverer Git søkeområdet og gjentar prosessen til den skyldige commiten er funnet.
Start bisect-søkingen
Først må De fortelle Git at De starter en bisect-økt. Deretter markerer De den kjente «dårlige» commiten (med feilen) og en kjent «god» commit (som fungerer).
De kan bruke commit-hasher, grennavn eller tagger.
git bisect start
git bisect bad HEAD
git bisect good <known_good_commit_hash>Den iterative prosessen: Test og marker
Etter at De har angitt de gode og dårlige commitene, sjekker Git automatisk ut en commit midt i dette intervallet. Deres oppgave er å teste koden i denne commiten.
- Hvis feilen finnes, markerer De den som dårlig.
- Hvis feilen ikke finnes, markerer De den som god.
Git går deretter videre til neste commit og halverer det gjenværende søkeområdet.
Markere en commit
Når De har testet den utsjekkede commiten, bruker De disse kommandoene til å fortelle Git om den er god eller dårlig:
- Markere den gjeldende commiten som dårlig:
git bisect bad - Markere den gjeldende commiten som god:
git bisect good
Git sjekker deretter automatisk ut neste commit som skal testes.
git bisect bad
# OR
git bisect goodAvgrense problemet
De gjentar prosessen med å «teste og markere». For hvert trinn kommer git bisect nærmere den ene commiten som introduserte feilen. Det er mye raskere enn å kontrollere commitene én etter én!
For et område på 100 commits kreves det maksimalt 7 tester (log2(100) ≈ 6,64).
Den skyldige er funnet
Til slutt avgrenser git bisect området til én enkelt commit. Deretter rapporterer Git den første «dårlige» commiten som ble funnet – commiten som introduserte feilen!
Når feilen er funnet, er det viktig å avslutte bisect-økten for å føre arkivet tilbake til den opprinnelige tilstanden (vanligvis grenen De var på da De startet).
git bisect resetHåndtere commits som ikke kan testes
Noen ganger kan git bisect ende på en commit som ikke kan testes (for eksempel fordi den ikke kompilerer, eller fordi avhengigheter er ødelagt). I slike tilfeller kan De be Git hoppe over den:
git bisect skip
Git velger da en annen commit å teste og sørger for at den som ble hoppet over, ikke tas med i det mulige feilintervallet.
git bisect skipAutomatisere med Git Bisect Run
For enda raskere feilsøking kan De automatisere testprosessen ved hjelp av git bisect run. Denne kommandoen tar imot et skript som utfører testen og avsluttes med bestemte koder:
0: Commiten er god.(unntatt1-127125): Commiten er dårlig.125: Commiten skal hoppes over (for eksempel fordi den ikke kan bygges).
Git kjører deretter skriptet automatisk for hver commit til feilen er funnet.
#!/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
fiSjekk arbeidsflyten for bisect
Hvilke av de følgende kommandoene er nødvendige når De utfører en manuell git bisect for å finne en feil?
Feilsøking oppgradert
De har mestret git bisect! Dette kraftige verktøyet gjør feilsøking fra en kjedelig oppgave til en effektiv og systematisk prosess ved hjelp av binærsøk.
- Start med
git bisect start, og definer gode og dårlige commits. - Test og marker commits som
goodellerbad. - Bruk
git bisect skipfor commits som ikke kan testes. - Automatiser med
git bisect runfor rask, automatisert feilsøking. - Avslutt alltid med
git bisect reset.
Lykke til med feilsøkingen!
Lær deg Git videregående: Monorepo, Submodules og arbeidsflyter med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Feilsøking med Git Bisect» gratis?
Ja – hele teksten i «Feilsøking med Git Bisect» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Git videregående: Monorepo, Submodules og arbeidsflyter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Git videregående: Monorepo, Submodules og arbeidsflyter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Feilsøking med Git Bisect»?
Bruk `git bisect` til effektivt å finne den nøyaktige commiten som introduserte en feil, og spar verdifull tid på feilsøking Du øver på Git videregående: Monorepo, Submodules og arbeidsflyter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Git videregående: Monorepo, Submodules og arbeidsflyter?
Ingen tidligere erfaring er nødvendig. Git videregående: Monorepo, Submodules og arbeidsflyter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Feilsøking med Git Bisect»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Git videregående: Monorepo, Submodules og arbeidsflyter-leksjonen?
Ja. Alle Git videregående: Monorepo, Submodules og arbeidsflyter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Gjenoppretting av tapte commits og grener
- Feilsøking med Git Bisect
- Optimalisering av Git-repositoriers ytelse
- Redde arbeid med Reflog og Stash