Jak sformatowatować log według własnych preferencji – opcja pretty

Opublikowane przez Tomasz Prasołek w dniu

Polecenie git log zna każdy użytkownik gita. Jest ono jednym z pierwszych, które poznajemy ucząc się tego systemu kontroli wersji. Pokazuje ono listę naszych commitów. W tym wpisie chciałem przedstawić jak można sformatować wygląd loga w dowolnym sposób jaki tylko chcemy. Log może pokazywać tylko te informacje, które są Nam naprawdę potrzebne.

Dla potrzeb tego wpisu sklonowałem sobie repozytorium kodu źródłowego gita i na nim będę uruchamiał wszystkie polecenia.

Podstawy

Naszym podstawowym poleceniem jest:

git log

Po jego wpisaniu w konsoli pokazuje Nam się lista commitów od najnowszego do najstarszego:

Widzimy następujące informacje o commicie:

  • Hash sha-1 (na żółto).
  • Informacje o branchach i tagach (na kolorowo).
  • Autora.
  • Datę powstania.
  • Informacja dodania do commita (commit message)

Informacji pojawi się tyle ile zmieści się w oknie konsoli. Do następnej strony możemy przejść klawiszem SPACE, a powrót do strony poprzedniej jest klawiszem W. Wyjście z przeglądania loga powoduje naciśnięcie klawisza Q.

Log w takim formacie zajmuje dużo miejsca, na jednym ekranie mieści się około 5 ostatnich commitów. Dodatkowo moim zdaniem jest to trochę nieczytelne.

Aby zwiększyć liczbę commitów na jednym ekranie możemy użyć opcji --oneline:

git log --oneline

Dostaniemy wtedy każdy commit w oddzielnej linii:

Przez to, że każdy commit znajduje się w oddzielnej linii, mamy tutaj mniej informacji. Nie widzimy kto i kiedy zrobił poszczególne commity.

Dostosowywanie wyglądu

Jeśli jednak chcielibyśmy widzieć każdego commita w oddzielnej linii wraz z informacją kto co zrobił i kiedy, to z pomocą przychodzi Nam opcja --pretty. Dzięki Niej możemy sformatować wygląd loga w sposób jaki tylko chcemy.

git log -15 --pretty='%h %s %cr by %an%d'

Tak skonstruowane polecenie zwróci Nam coś takiego (-15 jest po to, aby pokazało Nam tylko 15 ostatnich commitów):

Już teraz mamy informację kiedy została wprowadzona zmiana i przez kogo 🙂 Korzystając z opcji --pretty musimy używać odpowiednich placeholderów, które później zostaną zastąpione przez odpowiednie dane po uruchomieniu polecenia. O co w tym chodzi:

  • %h – początek hasha sha-1.
  • %s – informacja (commit message).
  • %cr – data w formacie względnym, czyli informacja w kontekście do daty bieżącej np. 3 days ago, 3 months ago itd. Można użyć innej opcji, aby data była pokazana w standardowy sposób.
  • %an – autor.
  • %d – informacja o branchach i tagach.

Jednak brakuje tutaj kolorów i trochę to jest nieczytelne. Dodajmy więc kolorki 🙂

git log -15 --pretty='%C(yellow)%h%Creset %s %Cgreen%cr%Creset %C(yellow)[%an]%Cred%d'

Teraz nasz log wygląda tak:

Od razu bardziej czytelnie. Co zatem zrobiliśmy?

Dodaliśmy odpowiednie kolory przed odpowiednimi placeholderami. %C(yellow)%h oznacza, że hash będzie na żółto,  %Cgreen%cr oznacza, że data będzie na zielono itd. UWAGA! Po każdej (oprócz ostatniej) zmianie koloru trzeba go zresetować dodając opcję %Creset. Bez tego cała linia byłaby w takim kolorze jaki był ustawiony jako pierwszy.

Stworzenie aliasu

Oczywiście wpisanie takiego długiego polecenia za każdym razem będzie bardzo uciążliwe dlatego ja zrobiłem sobie do tego alias. Zamiast wpisywać całą komendę wpisuję tylko:

git lg

Nie będę szczegółowo opisywał działanie aliasów, to jest temat na oddzielny wpis. Jednak pokażę jak dodać alias do naszego wcześniejszego polecenia. Trzeba wpisać w konsoli:

git config --global alias.lg "log --pretty='%C(yellow)%h%Creset %s %Cgreen%cr%Creset %C(yellow)[%an]%Cred%d'"

Więcej o aliasiach można przeczytać w dokumentacji: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases

Podsumowanie

Dzięki opcji --pretty możemy sformatować sobie naszego loga jak tylko chcemy. Możemy na przykład zrobić, że nasz log był bardziej przyjazny do czytania. Może wyglądać na przykład tak:

git log --pretty 1

lub tak:

git log --pretty 2

Wszystko w tym przypadku zależy tylko od naszych preferencji. Dużo więcej opcji formatowania można znaleźć w dokumentacji git log w sekcji Pretty formats.

Źródło: https://git-scm.com/docs/git-log


2 Komentarze

dotnetomaniak.pl · 12 września 2018 o 7 h 27 min

Jak sformatowatować log według własnych preferencji – opcja pretty – Tomasz Prasołek

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

Git log - dodatkowe opcje, które warto znać - Tomasz Prasołek · 26 września 2018 o 7 h 09 min

[…] 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. […]

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *