Git Bisect zum Debuggen
Nutzen Sie `git bisect`, um den Commit, der einen Fehler eingeführt hat, effizient zu ermitteln und wertvolle Debugging-Zeit zu sparen.
Git Bisect zum Debuggen ist eine kostenlose Git & GitHub Professional Workflow-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Git & GitHub Professional Workflow-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Git & GitHub Professional Workflow-Kurs umfasst insgesamt 4 Lektionen.
Fehler mit Git schneller finden
Debugging kann schwierig sein. Manchmal tritt ein Fehler auf, und Sie wissen nicht, welche Änderung ihn verursacht hat.
git bisect ist ein leistungsstarker Git-Befehl, mit dem Sie den genauen Commit ermitteln können, der einen Fehler eingeführt hat. Dazu wird ein Algorithmus zur binären Suche verwendet, der Tausende von Commits schnell eingrenzt.
Die Macht der binären Suche
Stellen Sie sich vor, Ihr Projekt hat 100 Commits und ein Fehler ist irgendwo zwischen dem ersten und dem letzten aufgetreten. Jeden einzelnen manuell zu überprüfen, wäre langsam!
git bisect funktioniert wie ein „Zahlenratespiel“:
- Sie teilen Git einen „guten“ Commit mit, in dem der Fehler nicht vorhanden war.
- Sie teilen Git einen „schlechten“ Commit mit, in dem der Fehler vorhanden ist.
- Git wählt ungefähr in der Mitte einen Commit aus und fordert Sie auf, ihn zu testen.
- Sie markieren ihn als „gut“ oder „schlecht“, und Git halbiert den Suchbereich.
Starten wir die Suche!
Zu Beginn müssen Sie Git mitteilen, dass Sie eine Bisect-Sitzung starten. Dieser Befehl initialisiert den Vorgang:
git bisect start
Nach dem Start geben Sie einen bekannten „schlechten“ Commit (in dem der Fehler vorhanden ist) und einen bekannten „guten“ Commit (in dem der Fehler definitiv nicht vorhanden war) an.
Oft ist der „schlechte“ Commit Ihr aktueller HEAD, während ein „guter“ Commit beispielsweise ein älteres Release-Tag oder ein Commit von vor einigen Tagen sein kann.
Die Grenzen Ihres Commit-Bereichs festlegen
Nachdem Sie git bisect gestartet haben, definieren Sie Ihren Suchbereich:
- Schlechter Commit: Dies ist ein Commit, bei dem der Fehler nachweislich vorhanden ist. Verwenden Sie
git bisect bad <commit-hash>oder einfachgit bisect bad, wenn es sich um Ihren aktuellenHEADhandelt. - Guter Commit: Dies ist ein Commit, bei dem der Fehler nachweislich NICHT vorhanden war. Verwenden Sie
git bisect good <commit-hash>.
Git checkt anschließend automatisch einen Commit in der Mitte dieses Bereichs aus.
Testen und weiter eingrenzen
Nachdem Sie Ihre guten und schlechten Commits markiert haben, checkt Git automatisch einen Commit in der Mitte des Bereichs aus. Ihre Aufgabe besteht darin, den Code in diesem ausgecheckten Commit zu testen.
- Wenn der Fehler VORHANDEN ist, geben Sie
git bisect badein. - Wenn der Fehler NICHT VORHANDEN ist, geben Sie
git bisect goodein.
Git wählt anschließend einen weiteren Commit in der Mitte des verbleibenden Bereichs aus. Sie wiederholen diesen Vorgang, bis Git den ersten „schlechten“ Commit gefunden hat.
Die Einführung eines Fehlers simulieren
Stellen wir uns einen einfachen „Fehler“ in einem Skript vor. Wir simulieren einen Projektverlauf, in dem ein kleiner Fehler eingeführt wurde.
Hier ist unser ursprüngliches „gutes“ 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"Manuelle Bisect-Anleitung
Nehmen wir nun an, ein späterer Commit hat die Schleife versehentlich in seq 1 4 geändert, wodurch die Summe falsch ist (10 statt 6).
Wir würden beginnen mit:
git bisect start
Dann markieren wir unseren aktuellen HEAD (in dem der Fehler vorhanden ist) als schlecht:
git bisect bad HEAD
Und einen älteren, nachweislich funktionierenden Commit als gut:
git bisect good <old_good_commit_hash>
Git führt Sie anschließend durch den Vorgang und checkt Commits aus. Sie würden ./main.sh ausführen, prüfen, ob die Summe 6 oder 10 ist, und dann entsprechend git bisect good oder git bisect bad eingeben.
Den Debugging-Prozess automatisieren
Jeden Commit manuell zu testen, kann bei komplexen Tests weiterhin zeitaufwendig sein. Mit git bisect run können Sie diesen Vorgang automatisieren!
Sie stellen ein Skript bereit, das folgende Exit-Codes zurückgibt:
0(null), wenn der Commit gut ist.125, wenn der Commit übersprungen werden soll.- Einen anderen Wert ungleich null (z. B.
1), wenn der Commit schlecht ist.
Git führt dieses Skript für jeden getesteten Commit aus, bis der Fehler gefunden wurde.
#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
exit 0 # Good commit
else
exit 1 # Bad commit
fiDie Suche abschließen
Sobald git bisect den ersten schlechten Commit erfolgreich ermittelt hat, zeigt Git dessen Commit-Hash und Nachricht an.
Nachdem Sie den Verursacher gefunden und das Problem verstanden haben, müssen Sie Ihr Repository unbedingt in den ursprünglichen Zustand vor dem Start von Bisect zurücksetzen:
git bisect reset
Dieser Befehl bringt Sie zurück zu dem Commit, auf dem Sie sich beim Start von Bisect befanden, und bereinigt den temporären Bisect-Zustand.
Wissenscheck zu Bisect
Sie haben gerade git bisect start ausgeführt, Ihren aktuellen HEAD als schlecht und einen älteren Commit als gut markiert. Git checkt einen Commit in der Mitte aus.
Sie führen Ihre Tests aus, und der Fehler IST in diesem mittleren Commit VORHANDEN.
`git bisect` im Überblick
Glückwunsch! Sie haben gelernt, wie Sie git bisect verwenden:
- Es ist ein leistungsstarkes Werkzeug, um den genauen Commit zu finden, der einen Fehler eingeführt hat.
- Es verwendet eine binäre Suche für eine effiziente Suche.
- Sie legen „gute“ (fehlerfreie) und „schlechte“ (fehlerhafte) Commits fest.
- Sie können den Testprozess mit
git bisect run <script>automatisieren. - Denken Sie immer daran, nach der Suche
git bisect resetauszuführen, um aufzuräumen!
Häufig gestellte Fragen
Ist die Lektion „Git Bisect zum Debuggen“ kostenlos?
Ja — der vollständige Text von „Git Bisect zum Debuggen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Git & GitHub Professional Workflow-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Git & GitHub Professional Workflow-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Git Bisect zum Debuggen“?
Nutzen Sie `git bisect`, um den Commit, der einen Fehler eingeführt hat, effizient zu ermitteln und wertvolle Debugging-Zeit zu sparen. Du übst Git & GitHub Professional Workflow mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Git & GitHub Professional Workflow zu starten?
Keine Vorkenntnisse erforderlich. Git & GitHub Professional Workflow auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Git Bisect zum Debuggen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Git & GitHub Professional Workflow-Lektion Code schreiben und ausführen?
Ja. Jede Git & GitHub Professional Workflow-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Git Reflog und Verlauf wiederherstellen
- Git Bisect zum Debuggen
- Repository-Wartung und Aufräumen
- Historie mit git filter-repo umschreiben