Git Bisect voor debugging
Gebruik `git bisect` om efficiënt de specifieke commit te vinden die een bug heeft geïntroduceerd, zodat u kostbare debugtijd bespaart.
Git Bisect voor debugging is een gratis Professionele Git- en GitHub-werkwijze-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 Professionele Git- en GitHub-werkwijze. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Professionele Git- en GitHub-werkwijze bevat in totaal 4 lessen.
Sneller bugs vinden met Git
Fouten opsporen kan lastig zijn. Soms verschijnt er een bug en weet je niet welke wijziging deze heeft veroorzaakt.
git bisect is een krachtige Git-opdracht waarmee je precies de commit kunt vinden die een bug heeft geïntroduceerd. De opdracht gebruikt een binair zoekalgoritme om duizenden commits snel te beperken.
De kracht van binair zoeken
Stel dat je project 100 commits heeft en dat ergens tussen de eerste en de laatste een bug is ontstaan. Elke commit handmatig controleren duurt lang!
git bisect werkt als een spelletje "raad het getal":
- Je vertelt Git welke commit "goed" is (daarin zat de bug nog niet).
- Je vertelt Git welke commit "slecht" is (daarin zit de bug wel).
- Git kiest ongeveer de middelste commit en vraagt je deze te testen.
- Je markeert deze als "goed" of "slecht", waarna Git het zoekgebied halveert.
Laten we de zoekopdracht starten!
Om te beginnen moet je Git vertellen dat je een bisect-sessie start. Met deze opdracht initialiseer je het proces:
git bisect start
Na het starten geef je een bekende "slechte" commit op (waarin de bug aanwezig is) en een bekende "goede" commit (waarin de bug zeker niet aanwezig was).
Vaak is de "slechte" commit je huidige HEAD, en kan een "goede" commit een oudere releasetag of een commit van enkele dagen geleden zijn.
De grenzen van je commit markeren
Nadat je git bisect hebt gestart, bepaal je het zoekbereik:
- Slechte commit: Dit is een commit waarvan je weet dat de bug aanwezig is. Gebruik
git bisect bad <commit-hash>of gewoongit bisect badals dit je huidigeHEADis. - Goede commit: Dit is een commit waarvan je weet dat de bug NIET aanwezig was. Gebruik
git bisect good <commit-hash>.
Git checkt daarna automatisch een commit in het midden van dit bereik uit.
Testen en het zoekgebied verkleinen
Nadat je je goede en slechte commits hebt gemarkeerd, checkt Git automatisch een commit in het midden van het bereik uit. Het is jouw taak om de code in deze uitgecheckte commit te testen.
- Als de bug WEL aanwezig is, typ je
git bisect bad. - Als de bug NIET aanwezig is, typ je
git bisect good.
Git kiest vervolgens een andere commit in het midden van het overgebleven bereik. Je herhaalt dit totdat Git de eerste "slechte" commit vindt.
Het ontstaan van een bug simuleren
Laten we ons een eenvoudige "bug" in een script voorstellen. We simuleren een projectgeschiedenis waarin een kleine fout is geïntroduceerd.
Dit is ons eerste "goede" 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"Handmatige bisect-uitleg
Stel nu dat een latere commit de lus per ongeluk heeft gewijzigd in seq 1 4, waardoor de som onjuist wordt (10 in plaats van 6).
We beginnen met:
git bisect start
Vervolgens markeren we onze huidige HEAD (waarin de bug aanwezig is) als slecht:
git bisect bad HEAD
En een oudere, bekende werkende commit als goed:
git bisect good <old_good_commit_hash>
Git begeleidt je vervolgens door commits uit te checken. Je voert ./main.sh uit, controleert of de som 6 of 10 is en typt daarna git bisect good of git bisect bad.
Het opsporingsproces automatiseren
Elke commit handmatig testen kan nog steeds veel tijd kosten als de test complex is. Met git bisect run kun je dit automatiseren!
Je geeft een script op dat eindigt met:
0(nul) als de commit goed is.125als de commit moet worden overgeslagen.- Elke andere waarde die niet nul is (bijvoorbeeld
1) als de commit slecht is.
Git voert dit script uit op elke geteste commit totdat de bug is gevonden.
#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
exit 0 # Good commit
else
exit 1 # Bad commit
fiJe zoekopdracht afronden
Wanneer git bisect de eerste slechte commit heeft gevonden, laat de opdracht je de commit-hash en het bericht zien.
Nadat je de oorzaak hebt gevonden en het probleem begrijpt, is het belangrijk om je repository terug te zetten naar de oorspronkelijke toestand van vóór de bisect:
git bisect reset
Met deze opdracht ga je terug naar de commit waarop je stond toen je de bisect startte en wordt de tijdelijke bisect-toestand opgeruimd.
Kennischeck over bisect
Je hebt zojuist git bisect start uitgevoerd, je huidige HEAD als slecht gemarkeerd en een oudere commit als goed. Git checkt een commit in het midden uit.
Je voert je tests uit en de bug IS AANWEZIG in deze middelste commit.
`git bisect` samenvatting
Gefeliciteerd! Je hebt geleerd hoe je git bisect gebruikt:
- Het is een krachtig hulpmiddel om precies de commit te vinden die een bug heeft geïntroduceerd.
- Het gebruikt binair zoeken voor efficiëntie.
- Je definieert "goede" (bugvrije) en "slechte" (bugaanwezige) commits.
- Je kunt het testproces automatiseren met
git bisect run <script>. - Voer altijd
git bisect resetuit om na je zoekopdracht alles op te ruimen!
Leer Professionele Git- en GitHub-werkwijze 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 “Git Bisect voor debugging” gratis?
Ja — de volledige tekst van “Git Bisect voor debugging” 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 Professionele Git- en GitHub-werkwijze wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Professionele Git- en GitHub-werkwijze bevat in totaal 4 lessen.
Wat leer ik in “Git Bisect voor debugging”?
Gebruik `git bisect` om efficiënt de specifieke commit te vinden die een bug heeft geïntroduceerd, zodat u kostbare debugtijd bespaart. Je oefent met Professionele Git- en GitHub-werkwijze 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 Professionele Git- en GitHub-werkwijze te beginnen?
Ervaring vooraf is niet nodig. Professionele Git- en GitHub-werkwijze 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 “Git Bisect voor debugging”?
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 Professionele Git- en GitHub-werkwijze?
Ja. Elke les over Professionele Git- en GitHub-werkwijze 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
- Git Reflog en geschiedenis herstellen
- Git Bisect voor debugging
- Repositoryonderhoud en opruimen
- Geschiedenis herschrijven met git filter-repo