Jak mogę wyświetlić nazwę gałęzi w `git log`?

216

Jak mogę wyświetlić nazwę gałęzi na wyjściu git log ?

Na przykład, git log --graph --allmam ładny przegląd zatwierdzeń, ale mylę się, która linia jest master, a która na przykład moja gałąź.

vdboor
źródło
1
Przydatne wydaje się, że wyświetlanie nazw połączonych głów lub tagów jest już wykonywane domyślnie od czasu ostatniej gitaktualizacji.
underscore_d

Odpowiedzi:

321

Wypróbuj opcję dekoracji.

git log --graph --all --decorate

Adnotuje zatwierdzenia wskazane przez tagi lub gałęzie.

CB Bailey
źródło
42
Dzięki --prettymożesz użyć %dtam, gdzie chcesz „ozdoby”.
CB Bailey,
4
@noli: Czego się spodziewasz? Nie wszystkie zatwierdzenia są wskazówkami dla oddziałów.
CB Bailey,
9
@noli git przechowuje tylko nazwę oddziału przy ostatnim zatwierdzeniu oddziału (wskazówka). Wszystkie zmiany w historii są równe i anonimowe. Jeśli chcesz mieć nazwane gałęzie, aby każde zatwierdzenie nosiło nazwę gałęzi, możesz użyć Mercurial.
Sampo Smolander
7
@CharlesBailey: Lubię kolory referencji git log --graph --all --oneline --decorate. Mam alias, git graphktóry używa --pretty(aby pokazać także inne rzeczy, takie jak autor i data), ale %dnie daje mi kolorów --decorate. Używam teraz żółtego dla wszystkich moich referencji, czy wiesz, jak mogę pozwolić --pretty, aby %dsznur odziedziczył kolory --decorate?
Gauthier
3
@Gauthier Jeśli chcesz mieć domyślne kolory w swoich --prettyformatach, dodaj %C(auto)przed elementem, co powinno być pokolorowane. np.git log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472,
7

Szukałem czegoś podobnego do tego - ale chciałem wiedzieć, jaką gałąź dokonano zmiany. Mam nadzieję, że ta odpowiedź przyda się także innym.

Badam ryzyko związane z blackboxszyfrowaniem, w którym repo i jego gałęzie / tagi mogą stać się niedostępne dla obecnych, adminsgdy wystarczająca liczba użytkowników opuści projekt, a keyringskatalog nie został oparty na religii na podstawie wzorca)

Odkryłem, że poniższa odpowiedź była pomocna, gdy keyringskatalog nie został zaktualizowany z poziomu głównego ...

Zasadniczo --sourcepotrzebowałem dodać gałęzie / tagi. Dodanie --name-onlypokaże również, który plik został faktycznie zmieniony.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Inna przydatna odpowiedź: jak wyświetlić git log z nazwą oddziału

Kontrola Androida
źródło
Dla mnie --sourcesam daje HEADza wszystkie zobowiązania. W połączeniu z --alltym wydaje się, że rozróżnia się różne gałęzie, ale wyświetlane informacje nie są tym, czego oczekuję: dla zatwierdzeń, które zrobiłem master, zamiast uzyskać refs/heads/master, otrzymuję prywatną gałąź ( refs/remotes/origin/…). Podejrzewam, że fuzje i / lub nowe oddziały powodują Gitutratę informacji historycznych.
vinc17
Zamiast tego --allmogę filtrować gałęzie za pomocą --branches --remotes=<pattern>, ale gdy tylko dwie gałęzie zostaną połączone, Git nie ma już informacji o tym, który z nich miał zatwierdzenie, kiedy zostało wykonane.
vinc17
1

Jeśli używasz oh-my-zsh jako terminala, to dostępnych jest kilka aliasów git. Wszystko to można zobaczyć na ich repozytorium oh-my-zsh / plugins / git . Jeśli nie korzystasz z tego terminala, możesz po prostu chwycić aliasy i wkleić te, które Ci się podobają, we własnym środowisku.

Przyjęta odpowiedź przedstawia git log --graph --all --decoratepolecenie, które jest dostępne jako glggaalias w oh-my-zsh.

Osobiście wolę glodsalias, który tłumaczy:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
Szymon
źródło