git shortlog bierze surowy git log i robi z niego czytelne podsumowanie pogrupowane według autorów: pod każdym nazwiskiem ląduje lista tytułów commitów. Domyślnie służy do generowania notatek do wydania (release notes), ale w praktyce najczęściej używasz go do szybkiej odpowiedzi na pytanie „kto i ile w tym repo nadłubał”. Działa wszędzie tam, gdzie masz gita: Linux, macOS, Windows.
Składnia i najważniejsze opcje
Podstawowa forma to git shortlog [opcje] [zakres-rewizji] [-- ścieżka...]. Bez podanego zakresu bierze całą historię prowadzącą do HEAD.
-s,--summary— ukrywa tytuły commitów, pokazuje tylko liczbę commitów na autora.-n,--numbered— sortuje malejąco wg liczby commitów zamiast alfabetycznie po autorze.-e,--email— dokleja adres e-mail przy każdym autorze (przydatne, gdy ktoś commituje pod kilkoma nazwiskami).-c,--committer— grupuje po committerze, a nie po autorze (różnica liczy się przy cherry-pick, rebase, mergach).--format=— zamiast tytułu użyj dowolnego formatu zgit log, np.--format='%h %s'.-w[szerokość,wcięcie1,wcięcie2]— zawija długie linie;-w0wcina bez zawijania.
Przykłady użycia
git shortlog -sn— klasyczny ranking: kto ile commitów, posortowany od największego. To polecenie, które zapamiętasz na lata.git shortlog -sne— to samo plus e-maile, idealne do wyłapania tej samej osoby pod dwoma adresami.git shortlog— pełne podsumowanie z tytułami commitów pogrupowanymi po autorze, gotowe do wklejenia w changelog.git shortlog -sn v1.0..v2.0— kto ile dorzucił między dwoma tagami, czyli wkład do konkretnego wydania.git shortlog -sn -- src/— ranking autorów ograniczony do zmian w katalogusrc/.
Częste błędy i pułapki
Najczęstsza wpadka: ten sam człowiek pojawia się dwa razy, bo raz commitował jako „Jan”, raz jako „jan k”. Lekarstwem jest plik .mailmap w katalogu głównym repo, który scala nazwiska i e-maile do jednej formy. Druga rzecz: git shortlog liczy commity, nie linie kodu ani jakość, więc to kiepski miernik produktywności (jeden sensowny commit bije sto z literówkami). Pamiętaj też o różnicy --author vs --committer: po rebase czy cherry-picku committer to często ktoś inny niż autor, a domyślnie grupowanie idzie po autorze. I drobiazg: jeśli odpalisz git shortlog bez zakresu i podasz mu dane na standardowe wejście (np. przez git log --pretty=short | git shortlog), zignoruje bieżące repo i podsumuje to, co dostał.
Powiązane komendy: git log, git blame, git shortlog --group, git author (przez --author w git log).