Menu
Coddy logo textTech

Git Bisect

Ostatnia aktualizacja

git bisect znajduje commit, który wprowadził błąd, metodą wyszukiwania binarnego. Wskazujesz mu commit na pewno dobry i commit na pewno zły; Git przełącza się na commit w połowie drogi, ty oznaczasz go jako dobry albo zły, a zakres za każdym razem zmniejsza się o połowę. Dzięki temu winny commit znajdziesz w kilku krokach, nawet wśród tysięcy commitów.

Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.

git bisect przeszukuje binarnie historię między dobrym a złym commitem, w każdym kroku zmniejszając podejrzany zakres o połowę.

Składnia

PolecenieCo robi
git bisect startRozpoczyna sesję bisect
git bisect badOznacza bieżący commit jako zły
git bisect good <hash>Oznacza commit, o którym wiesz, że jest dobry
git bisect good / git bisect badOznacza każdy przetestowany commit
git bisect run ./test.shAutomatyzacja: test oznacza każdy krok
git bisect resetKończy bisect i wraca na twoją gałąź

Przykład krok po kroku

Znajdź commit, który zepsuł build.

KrokPolecenieWynik
1git bisect startRozpoczęcie wyszukiwania
2git bisect badBieżący commit jest zepsuty
3git bisect good v1.0Ten stary tag działał
4Test, potem good/badPowtarzaj, aż Git wskaże commit

Najczęstsze pytania o git bisect

Co robi git bisect?
Przeprowadza wyszukiwanie binarne w historii commitów, żeby znaleźć dokładnie ten commit, który wprowadził błąd. Oznaczasz jeden commit jako dobry, a drugi jako zły; Git raz po raz przełącza się na środek zakresu do przetestowania i za każdym razem zawęża zakres o połowę, aż wskaże pierwszy zły commit.
Jak używać git bisect?
Uruchom git bisect start, oznacz bieżący, zepsuty stan przez git bisect bad, a działający commit przez git bisect good <hash>. Git przełącza się na commit pośrodku; przetestuj go i uruchom git bisect good albo git bisect bad. Powtarzaj, aż Git poda pierwszy zły commit, a potem uruchom git bisect reset.
Czy da się zautomatyzować git bisect?
Tak. git bisect run <script> uruchamia twój skrypt na każdym kroku. Skrypt powinien kończyć się kodem 0 dla dobrego commita i kodem różnym od zera dla złego (dobrze sprawdzają się tu narzędzia do testów). Git sam przeprowadza wtedy bisect, bez ręcznego oznaczania każdego commita, i na końcu wypisuje winny commit.
Jak zakończyć bisect?
Uruchom git bisect reset, żeby zakończyć sesję i wrócić na gałąź i commit sprzed jej rozpoczęcia. Zrób to niezależnie od tego, czy zły commit się znalazł: polecenie sprząta tymczasowy stan bisect.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom git bisect w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia przeglądanie historii.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ