Debuggen met Git Bisect
Gebruik `git bisect` om efficiënt de exacte commit te vinden die een bug heeft geïntroduceerd, zodat u waardevolle tijd bij het debuggen bespaart
Debuggen met Git Bisect is een gratis Geavanceerde Git: monorepo's, submodules en werkstromen-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Geavanceerde Git: monorepo's, submodules en werkstromen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Geavanceerde Git: monorepo's, submodules en werkstromen bevat in totaal 4 lessen.
Wat is Git Bisect?
Stel dat er een fout in je project verschijnt, maar je niet weet welke recente wijziging deze heeft veroorzaakt. Elke commit handmatig controleren kan enorm veel tijd kosten!
git bisect is een krachtige Git-opdracht die een binair zoekalgoritme gebruikt om snel de exacte commit te vinden die een fout heeft geïntroduceerd.
Het voordeel van binair zoeken
Hoe werkt git bisect zo snel? Het lijkt op een spelletje ‘warm of koud’ met je commitgeschiedenis.
- Je vertelt Git welke commit je zeker slecht vindt (de fout bevat).
- Je vertelt Git welke commit je zeker goed vindt (van vóór het bestaan van de fout).
- Git kiest ongeveer de middelste commit en vraagt je die te testen.
- Op basis van je feedback halveert Git het zoekgebied en herhaalt dit totdat de boosdoener is gevonden.
Je Bisect-zoektocht starten
Om te beginnen vertel je Git eerst dat je een bisect-sessie start. Daarna markeer je de bekende ‘slechte’ commit (met de fout) en een bekende ‘goede’ commit (die werkt).
Je kunt commit-hashes, branchnamen of tags gebruiken.
git bisect start
git bisect bad HEAD
git bisect good <known_good_commit_hash>Het iteratieve proces: testen en markeren
Nadat je je goede en slechte commits hebt gedefinieerd, checkt Git automatisch een commit in het midden van dat bereik uit. Het is jouw taak om de code bij deze commit te testen.
- Als de fout aanwezig is, markeer je de commit als slecht.
- Als de fout NIET aanwezig is, markeer je de commit als goed.
Git gaat vervolgens naar de volgende commit en halveert het resterende zoekgebied.
Een commit markeren
Nadat je de momenteel uitgecheckte commit hebt getest, gebruik je deze opdrachten om Git te vertellen of de commit goed of slecht is:
- De huidige commit als slecht markeren:
git bisect bad - De huidige commit als goed markeren:
git bisect good
Git checkt vervolgens automatisch de volgende commit uit om te testen.
git bisect bad
# OR
git bisect goodHet probleem verder afbakenen
Je herhaalt het proces van ‘testen en markeren’. Bij elke stap komt git bisect dichter bij de ene commit die de fout heeft geïntroduceerd. Dat is veel sneller dan commits één voor één controleren!
Voor een bereik van 100 commits zijn maximaal 7 tests nodig (log2(100) ≈ 6,64).
De boosdoener gevonden
Uiteindelijk verkleint git bisect het bereik tot één commit. Vervolgens rapporteert Git de eerst gevonden ‘slechte’ commit: de commit die de fout heeft geïntroduceerd!
Nadat je de fout hebt gevonden, is het belangrijk om de bisect-sessie te verlaten, zodat je opslagplaats terugkeert naar de oorspronkelijke staat (meestal de branch waarop je werkte toen je begon).
git bisect resetNiet-testbare commits verwerken
Soms komt git bisect terecht bij een commit die niet kan worden getest (de code kan bijvoorbeeld niet worden gecompileerd of afhankelijkheden zijn defect). In zulke gevallen kun je Git vertellen deze commit over te slaan:
git bisect skip
Git kiest dan een andere commit om te testen en sluit de overgeslagen commit uit van het mogelijke bereik waarin de fout is ontstaan.
git bisect skipAutomatiseren met Git Bisect Run
Voor nog sneller fouten opsporen kun je het testproces automatiseren met git bisect run. Deze opdracht gebruikt een script dat de test uitvoert en wordt afgesloten met specifieke codes:
0: De commit is goed.(behalve1-127125): De commit is slecht.125: De commit moet worden overgeslagen (kan bijvoorbeeld niet worden gebouwd).
Git voert het script vervolgens automatisch uit voor elke commit totdat de fout is gevonden.
#!/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
fiControle van de Bisect-werkstroom
Welke van de volgende opdrachten zijn essentieel wanneer je handmatig git bisect uitvoert om een fout te vinden?
Debuggen naar een hoger niveau
Je beheerst git bisect! Met dit krachtige hulpmiddel verandert het zoeken naar fouten van een vervelende klus in een efficiënt, systematisch proces met binair zoeken.
- Begin met
git bisect starten definieer goede en slechte commits. - Test commits en markeer ze als
goodofbad. - Gebruik
git bisect skipvoor commits die niet kunnen worden getest. - Automatiseer met
git bisect runvoor snel debuggen zonder handmatig werk. - Sluit altijd af met
git bisect reset.
Veel succes met het opsporen van fouten!
Leer Geavanceerde Git: monorepo's, submodules en werkstromen met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Debuggen met Git Bisect” gratis?
Ja — de volledige tekst van “Debuggen met Git Bisect” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Geavanceerde Git: monorepo's, submodules en werkstromen wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Geavanceerde Git: monorepo's, submodules en werkstromen bevat in totaal 4 lessen.
Wat leer ik in “Debuggen met Git Bisect”?
Gebruik `git bisect` om efficiënt de exacte commit te vinden die een bug heeft geïntroduceerd, zodat u waardevolle tijd bij het debuggen bespaart Je oefent met Geavanceerde Git: monorepo's, submodules en werkstromen door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Geavanceerde Git: monorepo's, submodules en werkstromen te beginnen?
Ervaring vooraf is niet nodig. Geavanceerde Git: monorepo's, submodules en werkstromen op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Debuggen met Git Bisect”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Geavanceerde Git: monorepo's, submodules en werkstromen?
Ja. Elke les over Geavanceerde Git: monorepo's, submodules en werkstromen bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Verloren commits en branches herstellen
- Debuggen met Git Bisect
- Prestaties van Git-repositories optimaliseren
- Werk redden met de Reflog en Stash