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