2011-04-19 18 views
12

Nie sądzę, że jest łatwiejszy sposób na zrobienie tego, ale pomyślałem, że poproszę o potwierdzenie.Sprawdzanie, kiedy kod został zmieniony w git

Mam trochę kodu, w którym usunięto ważny wiersz (przeze mnie). Chciałem dowiedzieć się, w jaki sposób popełniłem błąd, przez przypadek usunąłem tę linię. Jedynym sposobem, jaki mogłem znaleźć, było rozpoczęcie git "diff'ing" na kolejnych wcześniejszych zatwierdzeniach, jeden po drugim, aż znalazłem commit, gdzie linia została zmieniona.

Czy istnieje łatwiejszy sposób sprawdzenia, w jaki sposób zatwierdzono daną część kodu?

Odpowiedz

24

Jeśli zmodyfikowałeś lub dodałeś tylko linię, możesz oczywiście użyć git blame. Jeśli całkowicie usunąłeś linię, to oczywiście to nie pomoże.

Jeśli znasz przynajmniej część tekstu w usuniętej linii, możesz użyć opcji "kilof" pod numerem git log, aby ograniczyć wyszukiwane hasła.

E.g.

git log -S"important phrase" -p -- <file> 
5

git log -p daje pełny raport z dyferencjału, które można przeszukiwać lub przeglądać.

git bisect zapewnia wsparcie narzędzia do wyszukiwania. Uruchom go gdzieś daleko w tył, który ma linię, powiedz git bisect good, gdy linia jest obecna, i git bisect bad, gdy nie jest. W końcu Git zbiegnie się do zatwierdzenia, skąd zostanie usunięte.

+0

Myślę, że bisect jest najlepszą odpowiedzią na znalezienie brakującego lub złego kodu. – cmcginty

+0

Chodzi o to, że bisect wykonuje wyszukiwanie binarne, dzięki czemu użytkownik nie musi wykonywać skanowania liniowego ani ręcznie binarnego wyszukiwania. – Novelocrat

Powiązane problemy