Git
Przecinanie / znajdowanie wadliwych zobowiązań
Szukaj…
Składnia
git bisect <subcommand> <options>git bisect start <bad> [<good>...]git bisect resetgit bisect goodgit bisect bad
Wyszukiwanie binarne (git bisect)
git bisect pozwala ci znaleźć, który commit wprowadził błąd za pomocą wyszukiwania binarnego.
Rozpocznij od podzielenia sesji na dwie części, podając dwa odwołania do zatwierdzenia: dobre zatwierdzenie przed błędem i złe zatwierdzenie po błędzie. Zasadniczo złym zatwierdzeniem jest HEAD .
# start the git bisect session
$ git bisect start
# give a commit where the bug doesn't exist
$ git bisect good 49c747d
# give a commit where the bug exist
$ git bisect bad HEAD
git rozpoczyna wyszukiwanie binarne: Dzieli wersję na pół i przełącza repozytorium na wersję pośrednią. Sprawdź kod, aby ustalić, czy poprawka jest dobra czy zła:
# tell git the revision is good,
# which means it doesn't contain the bug
$ git bisect good
# if the revision contains the bug,
# then tell git it's bad
$ git bisect bad
git będzie nadal uruchamiał wyszukiwanie binarne dla każdego pozostałego podzbioru złych wersji, w zależności od twoich instrukcji. git zaprezentuje pojedynczą wersję, która, chyba że twoje flagi były niepoprawne, będzie dokładnie reprezentować wersję, w której wprowadzono błąd.
Następnie pamiętaj o uruchomieniu git bisect reset aby zakończyć sesję bisect i wrócić do HEAD.
$ git bisect reset
Jeśli masz skrypt, który może sprawdzić błąd, możesz zautomatyzować proces za pomocą:
$ git bisect run [script] [arguments]
Gdzie [script] to ścieżka do twojego skryptu, a [arguments] to wszelkie argumenty, które powinny zostać przekazane do twojego skryptu.
Uruchomienie tego polecenia automatycznie uruchomi wyszukiwanie binarne, wykonując polecenie git bisect good lub git bisect bad na każdym kroku, w zależności od kodu wyjścia skryptu. Wyjście z 0 oznacza good , a wyjście z 1-124, 126 lub 127 oznacza złe. 125 wskazuje, że skrypt nie może przetestować tej wersji (co spowoduje uruchomienie git bisect skip ).
Półautomatycznie znajdź błędne zatwierdzenie
Wyobraź sobie, że jesteś w gałęzi master i coś nie działa zgodnie z oczekiwaniami (wprowadzono regresję), ale nie wiesz gdzie. Wiesz tylko, że działało to w ostatniej wersji (która została np. Oznaczona lub znasz skrót zatwierdzenia, weźmy tutaj old-rel ).
Git ma dla Ciebie pomoc w znalezieniu błędnego zatwierdzenia, które wprowadziło regresję z bardzo małą liczbą kroków (wyszukiwanie binarne).
Po pierwsze zacznij dzielić na dwie części:
git bisect start master old-rel
To powie gitowi, że master jest zepsutą wersją (lub pierwszą zepsutą wersją), a old-rel jest ostatnią znaną wersją.
Git sprawdzi teraz odłączoną głowę w środku obu zatwierdzeń. Teraz możesz wykonać testy. W zależności od tego, czy działa, czy nie
git bisect good
lub
git bisect bad
. Jeśli to zatwierdzenie nie może być przetestowane, możesz łatwo git reset i przetestować to, git zajmie się tym.
Po kilku krokach git wyświetli wadliwy skrót zatwierdzenia.
Aby przerwać proces dzielenia, po prostu wydaj
git bisect reset
a git przywróci poprzedni stan.