Git Bisect
Zuletzt aktualisiert
git bisect findet per Binärsuche den Commit, der einen Bug eingeführt hat. Du nennst ihm einen bekannten funktionierenden und einen bekannten fehlerhaften Commit; es checkt einen Commit in der Mitte aus, du markierst ihn als good oder bad, und es halbiert den Bereich jedes Mal - so findet es den Übeltäter in wenigen Schritten, selbst über Tausende von Commits hinweg.
Probiere diese im Terminal-Playground aus - eine echte Shell in deinem Browser, nichts zu installieren.
Syntax
| Command | What it does |
|---|---|
git bisect start | Startet eine Bisect-Sitzung |
git bisect bad | Markiert den aktuellen Commit als fehlerhaft |
git bisect good <hash> | Markiert einen bekannten funktionierenden Commit |
git bisect good / git bisect bad | Markiert jeden getesteten Commit |
git bisect run ./test.sh | Automatisieren: führt einen Test aus, um jeden Schritt zu markieren |
git bisect reset | Beendet Bisect, kehrt zu deinem Branch zurück |
Durchgerechnetes Beispiel
Finde heraus, welcher Commit den Build kaputtgemacht hat.
| Step | Command | Result |
|---|---|---|
| 1 | git bisect start | Startet die Suche |
| 2 | git bisect bad | Der aktuelle Commit ist kaputt |
| 3 | git bisect good v1.0 | Dieses alte Tag hat funktioniert |
| 4 | Testen, dann good/bad | Wiederholen, bis Git den Commit nennt |
Git-bisect-FAQ
Was macht git bisect?
Es führt eine Binärsuche durch deinen Commit-Verlauf durch, um genau den Commit zu finden, der einen Bug eingeführt hat. Du markierst einen Commit als good und einen als bad; Git checkt wiederholt den Mittelpunkt zum Testen aus und halbiert den Suchbereich jedes Mal, bis es den ersten fehlerhaften Commit identifiziert.
Wie verwende ich git bisect?
Führe
git bisect start aus, markiere den aktuellen kaputten Zustand mit git bisect bad und einen bekannten funktionierenden Commit mit git bisect good <hash>. Git checkt einen Mittelpunkt aus; teste ihn und führe git bisect good oder git bisect bad aus. Wiederhole, bis Git den ersten fehlerhaften Commit meldet, und führe dann git bisect reset aus.Kann ich git bisect automatisieren?
Ja.
git bisect run <script> führt dein Skript bei jedem Schritt aus - das Skript sollte für einen guten Commit mit 0 und für einen fehlerhaften mit ungleich null beenden (Test-Runner eignen sich gut). Git bisect dann automatisch, ohne dass du jeden Commit von Hand markierst, und gibt am Ende den verursachenden Commit aus.Wie beende ich ein Bisect?
Führe
git bisect reset aus, um die Sitzung zu beenden und zu dem Branch und Commit zurückzukehren, auf dem du vor dem Start warst. Tu das, egal ob du den fehlerhaften Commit gefunden hast oder nicht - es räumt den temporären Bisect-Zustand auf.Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um
git bisect in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt auch das schrittweise Inspizieren des Verlaufs.