Git log – dodatkowe opcje, które warto znać

Kolejny wpis opisujący polecenie git log. Dzisiaj jednak już nie będziemy dalej dostosowywać wyglądu loga do własnych potrzeb. Skoro już go mamy dostosowanego, to teraz pora na wyciągnięcie z niego więcej danych. Polecenie git log ma dużo opcji, kilka z nich chciałem przedstawić w tym wpisie.
Tak jak w jednym z poprzednich wpisów, wszystkie przykłady będą pokazywane na repozytorium kodu źródłowego gita. W przykładach będzie wpisywał polecenie git log z odpowiednimi opcjami, jednak na zrzutach ekranu będę korzystał z własnego aliasu git lg (ustawionego na polecenie git log). Jak dodać alias pisałem na końcu wpisu: Jak sformatowatować loga według własnych preferencji – opcja pretty.
Git log – opcje
-p / -u / –patch
Każda z tych opcji jest tożsama. Pokazuje dodatkowo w logu jakie zmiany (diff) w plikach nastąpiły w poszczególnych commitach.
git log -p
— stat
Pokazuje pliki, które zostały zmienione wraz z liczbą dodanych i usuniętych linii w kodzie. Podaje również podsumowanie z informacją ile plików zostało zmienionych, ile linii we wszystkich plikach zostało dodanych bądź usuniętych.
git log --stat
–no-merges
Domyślnie w logu są pokazywane tzw. merge commits, czyli commity mające dwóch rodziców powstałe w wyniku operacji merge. Jeśli nie chcemy ich widzieć to możemy używać właśnie tej opcji.
git log --no-merges
Najpierw zobaczmy jak wygląda log bez tej opcji:
A teraz bez merge commits:
Widać, że nie widać 🙂 kilku commitów z pierwszego zrzutu ekranu.
Filtry
Log można filtrować na kilka sposobów.
Liczba commitów (ostatnich)
git log -15
Podstawowy filtr, służy do pokazania określonej liczby commitów. Użyłem go przy pokazywaniu opcji --no-merges, aby pokazać tylko określoną liczbę commitów.
Data
Możemy filtrować oczywiście po dacie. Jeśli chcemy zobaczyć commity od konkretnej daty to używamy opcji:
git log --after="2018-9-2"
Dla osiągnięcia tego samego efektu możemy również użyć zapisy względnego (pierwszy szkic tego postu był pisany 9 września):
git log --after="1 week ago"
Jeśli chcemy historię z konkretnego przedziału to wtedy używamy 2 opcji:
git log --after="2018-8-1" --before="2018-9-1"
Autor
Jeśli chcesz dowiedzieć się co robiła konkretna osoba z Twojego zespołu to użyj opcji filtra –author:
git log --author="Jeff King"
Informacja zawarta w commit message
Do przeszukiwania informacji wpisanych przy commicie służy opcja --grep.
git log --grep="tests"
UWAGA! Jeśli korzystacie z opcji –oneline lub z aliasu który pokazuje informacje w jednej linii, to może się okazać, że wyszukiwanego słowa nie widać w opisie commita.

Jak widać pierwszy commit w opisie nie ma słowa “tests”. Jednak jeśli przyjrzymy się temu commitowi dokładniej:
git show 28d294a5e

To widać, że w pełnej informacji się już znajduje. Dlatego nasz commit został pokazany.
Historia wybranych plików
Żeby przejrzeć historię konkretnego pliku wystarczy podać jego ścieżkę po 2 znakach myślnika --. Te dwa znaki oznaczają, że po nim zostaną podane ścieżki do plików, nie żadne inne opcje lub nazwy np. branchy.
git log -- git-rebase.sh

Wyszukiwanie w pliku
Ta opcja to nie jest standardowe wyszukiwanie w treści plików. Nie pokaże plików, w których występuje wyszukiwany tekst. Ta opcja wyszukuje wystąpień podanego słowa, która zostały dodane do pliku lub z niego usunięte. Czyli pokaże pierwszy commit, gdzie to słowo zostało dodane lub commit, z którego właśnie zostało usunięte.
git log -S "Our searched text"
Garść statystyk
Załóżmy że chcemy się dowiedzieć kto dodał najwięcej commitów w naszym repozytorium. Możemy do tego użyć polecenia shortlog. To jest już inne polecenie niż log, ale ma tylko kilka opcji, więc postanowiłem o tym tutaj wspomnieć.
git shortlog
Powyższe polecenie pokaże Nam ile kto zrobił commitów wraz ze wszystkimi commit message. Dane są posortowane alfabetycznie po nazwie autora.
W przypadku takiego dużego repozytorium ciężko będzie coś się z tego w szybki sposób dowiedzieć. Użyjmy opcji -n.
git shortlog -n
Teraz mamy posortowane informacje według liczby commitów. Widać, że najwięcej pracy włożył Junio C Hamano. Zrobił on ponad 19 tys. commitów 🙂 Jednak pod spodem mamy wypisane wszystkie jego commity. Jak można się dowiedzieć kto jest jeszcze w czołówce? Teraz dodamy opcję -s.
git shortlog -n -s
Teraz widzimy już tylko autora wraz z liczbą jego commitów.
Podsumowanie
Polecenie git log ma dużo różnych opcji. Wydaje mi się, że w tym poście przedstawiłem najbardziej przydatne i najciekawsze (moim zdaniem). Git shortlog za często się nie przyda, ale fajnie jest czasami spojrzeć w takie dane 🙂 Jeśli korzystasz jeszcze z jakichś innych opcji, to daj znać w komentarzu.
Źródła:
https://git-scm.com/docs/git-log
https://medium.com/the-andela-way/exploring-the-git-log-command-9117b9ff3c2c
https://git-scm.com/docs/git-shortlog








1 Komentarz
dotnetomaniak.pl · 26 września 2018 o 7 h 12 min
Git log – dodatkowe opcje, które warto znać – Tomasz Prasołek
Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl