git bisect

Fehlersuche

Den Commit finden, der einen Fehler eingeführt hat, per binärer Suche


Der Befehl 'git bisect' findet den Commit, der einen Fehler eingeführt hat. Du markierst einen Commit als schlecht (bad, hat den Fehler) und einen als gut (good, hat ihn nicht); git checkt den Commit in der Mitte aus, du testest ihn und antwortest good oder bad, und git halbiert die Verdächtigen erneut, bis nur einer übrig ist. Selbst tausend Commits brauchen nur etwa zehn Tests. git bisect reset bringt dich zurück an den Ausgangspunkt.

Syntax

git bisect start [<bad> [<good>...]]
git bisect (bad | good) [<rev>...]
git bisect skip [<rev>...]
git bisect reset
git bisect log
git bisect run <cmd>...
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (4)

Startet eine Sitzung; optional gleich den schlechten und dann die guten Commits angeben.

EmpfohlenSpar dir zwei Befehle: nenne bad und good auf einmal

Beispiel

git bisect start HEAD v1.0

Der aktuelle Commit lässt sich nicht testen; nimm einen anderen.

Bei BedarfWeitermachen, wenn ein Commit nicht testbar ist

Beispiel

git bisect skip

Zeigt jeden Befehl und jede Antwort der laufenden Sitzung.

Bei BedarfEine bisect-Sitzung überprüfen oder wiederholen

Beispiel

git bisect log

Beendet die Sitzung und kehrt zum Ausgangsbranch zurück.

EmpfohlenBeende eine bisect-Sitzung immer damit

Beispiel

git bisect reset

Erfahren (1)

Führt einen Befehl auf jedem Kandidaten aus: Exit-Code 0 = gut, 1–127 = schlecht, 125 = überspringen.

EmpfohlenVollautomatisches bisect mit einem Testskript

Beispiel

git bisect run npm test

Die richtige Option wählen

Nötige Tests

Die Binärsuche halbiert die Verdächtigen jedes Mal

Befehlbisect-Tests
10 commitsetwa 4
100 commitsetwa 7
1000 commitsetwa 10

Beispiele

Eine Sitzung starten

git bisect start

Beginnt die Suche.


Commits markieren

git bisect bad && git bisect good v1.0

Der aktuelle Commit ist schlecht, v1.0 war gut.


Automatisieren

git bisect run npm test

Lass ein Testskript für dich antworten.


Abschließen

git bisect reset

Zurück auf deinen Branch.

Workflow-Beispiele

1
git bisect start HEAD v1.0

Jetzt schlecht, in v1.0 gut

2
git bisect good / git bisect bad

Jeden Commit testen, den git auscheckt

3
git bisect reset

Zurück auf deinen Branch

4
git revert <first-bad>

Den Schuldigen rückgängig machen

Fehlerbehebung

You need to start by "git bisect start"

Ursache: Keine Sitzung läuft

Führe zuerst git bisect start aus

Falsche Antwort gegeben

Ursache: Alle späteren Schritte bauen darauf auf

git bisect log > log.txt, Zeile korrigieren, git bisect reset, git bisect replay log.txt

Tipps & Stolperfallen

Best Practices

  • ✓Schreibe einen automatischen Test und nutze git bisect run.
  • ✓Beende immer mit git bisect reset.

Häufige Fehler

  • ✗Einmal falsch antworten — dann sind alle späteren Schritte falsch (prüfe mit git bisect log).
  • ✗git bisect reset vergessen und auf einem losgelösten HEAD weiterarbeiten.
  • ✗Mit nicht committeten Änderungen starten, die beim Auschecken stören.

FAQ

A:

Ja: git bisect start --term-old=fast --term-new=slow, z. B. um herauszufinden, wann etwas langsam wurde.