Jak wyświetlić wszystkie tagi wraz z pełną wiadomością w git?

359

Chcę, aby git wyświetlał wszystkie tagi wraz z pełną adnotacją lub wiadomością zatwierdzenia. Coś takiego jest blisko:

git tag -n5

Robi to dokładnie to, co chcę, poza tym, że wyświetla się tylko do pierwszych 5 wierszy wiadomości tagu.

Chyba mogę użyć bardzo dużej liczby. Jakiej liczby mogę użyć tutaj? Czy to samo na każdym komputerze?

AKTUALIZACJA : Miałem dużo czasu na przemyślenie tego i teraz myślę, że niekoniecznie chcę pokazać całą każdą wiadomość, jeśli niektóre są wyjątkowo długie. Tak naprawdę nie potrzebowałem żadnej szczególnej potrzeby, która wymagałaby ode mnie wyświetlania ogromnych wiadomości (innych niż moja własna skłonność do bycia rozwikłanym we wszystkim, co piszę, w tym w tagach). Po prostu nie podobał mi się pomysł, że niekoniecznie pokaże mi całą wiadomość, ponieważ to sprawiło, że poczułem, że ukrywa przede mną informacje. Ale zbyt wiele informacji może być również złą rzeczą.

still_dreaming_1
źródło
62
git tag -nZrobiłem to dla mnie
Martin Berger,
11
git tag -ndrukuje tylko pierwszy wiersz adnotacji, zgodnie ze stroną podręcznika.
Paul Price
@INTPner, uzgodniony, tag -l służy do wyświetlania tagów z określonym wzorcem. Edycja odpowiedzi.
Zubair,

Odpowiedzi:

348

Spróbuj, wyświetli wszystkie tagi wraz z adnotacjami i 9 liniami wiadomości dla każdego tagu:

git tag -n9

można również użyć

git tag -l -n9

jeśli określone tagi mają zawierać:

git tag -l -n9 v3.*

(np. powyższe polecenie wyświetla tylko tagi zaczynające się od „v3”).

-l, --list Lista znaczników z nazwami pasującymi do podanego wzorca (lub wszystkich, jeśli nie podano wzorca). Uruchomienie „git tag” bez argumentów wyświetla również wszystkie tagi. Wzorzec jest znakiem wieloznacznym powłoki (tzn. Dopasowanym za pomocą fnmatch (3)). Można podać wiele wzorów; jeśli którykolwiek z nich pasuje, znacznik jest wyświetlany.

Zubair
źródło
6
Spowoduje to wydrukowanie tylko pierwszego wiersza każdej adnotacji.
Paul Price
3
@Paul Price: tylko ty masz adnotację, w przeciwnym razie drukuje komunikat zatwierdzenia. Zgadzam to nie jest odpowiedź.
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功
3
Zgodnie z dokumentacją -lopcja polega na filtrowaniu według wzorca. Nie rozumiem, jak by to było pomocne. Czy coś brakuje?
still_dreaming_1
2
@INTPnerd tak, tutaj -ljest całkowicie zbędny
Lambart
1
@ P.MyerNore Musisz użyć dziwnej wersji git lub przekazać dodatkowe argumenty, aby zrobić coś więcej niż to, o co pyta to pytanie. Ale dobrze jest wiedzieć, że w niektórych sytuacjach potrzebne jest -l.
still_dreaming_1
119
git tag -n99

Krótkie i słodkie. Spowoduje to wyświetlenie do 99 wierszy z każdej wiadomości adnotacji / zatwierdzenia znacznika. Oto link do oficjalnej dokumentacji tagu git .

Myślę, że ograniczenie wyświetlania tylko 99 linii na tag jest w rzeczywistości dobrą rzeczą, ponieważ przez większość czasu, gdyby było naprawdę więcej niż 99 linii na jeden tag, naprawdę nie chciałbyś zobaczyć całej reszty linie byś? Jeśli chciałbyś zobaczyć więcej niż 99 linii na tag, zawsze możesz zwiększyć to do większej liczby.

Mam na myśli, że może istnieć konkretna sytuacja lub powód, aby chcieć zobaczyć masowe wiadomości tagów, ale w którym momencie nie chcesz zobaczyć całej wiadomości? Kiedy ma więcej niż 999 linii? 10 000? 1 000 000? Chodzi mi o to, że zwykle ma sens ograniczenie liczby linii, które można zobaczyć, a ta liczba pozwala to ustawić.

Ponieważ argumentuję za tym, co ogólnie chcesz zobaczyć, gdy patrzysz na tagi, prawdopodobnie warto ustawić coś takiego jako alias (z komentarza Iuliana Onofrei poniżej):

git config --global alias.tags 'tag -n99'

Chodzi mi o to, że tak naprawdę nie chcesz wpisywać za git tag -n99każdym razem, gdy chcesz tylko zobaczyć tagi, prawda? Po skonfigurowaniu tego aliasu za każdym razem, gdy chcesz zobaczyć swoje tagi, wystarczy wpisać git tagsw terminalu. Osobiście wolę pójść o krok dalej i stworzyć jeszcze bardziej skrócone aliasy bash dla wszystkich moich często używanych poleceń. W tym celu możesz dodać coś takiego do pliku .bashrc (działa w systemie Linux i podobnych środowiskach):

alias gtag='git tag -n99'

Następnie, gdy chcesz zobaczyć tagi, po prostu wpisz gtag. Kolejną zaletą przejścia aliasami (aliasy git lub aliasy bash lub cokolwiek innego) jest to, że masz już miejsce, w którym możesz dodawać dalsze dostosowania do tego, jak osobiście chcesz, aby Twoje tagi były pokazywane (np. Sortowanie je w określony sposób, jak w moim komentarzu poniżej itp.). Gdy miniesz już trud tworzenia pierwszego aliasu, zrozumiesz, jak łatwo jest stworzyć więcej z nich dla innych rzeczy, które lubisz pracować w spersonalizowany sposób, na przykład git log, ale zapiszmy to na inne pytanie / odpowiedź .

still_dreaming_1
źródło
3
git config --global alias.tags 'tag -n99'
Iulian Onofrei
@IulianOnofrei, miło, nie wiedziałem, że git pozwala ci definiować aliasy. Zdaję sobie sprawę, że to nie na temat, ale nie mogę się oprzeć. Właśnie tego używam (umieszczonego w twoim .bashrc lub coś takiego):alias gtag='git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags | sort -V'
still_dreaming_1
25

Odpowiedź (użycie git show) Marka Longaira jest zbliżona do tego, co jest pożądane w pytaniu. Zawiera jednak również zatwierdzenie wskazane przez znacznik, wraz z pełną łatką dla tego zatwierdzenia. Ponieważ zatwierdzenie może być nieco niezwiązane ze znacznikiem (tylko jeden zatwierdzenie próbuje przechwycić znacznik), może to być niepożądane. Uważam, że następujące jest nieco ładniejsze:

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done
Paul Price
źródło
Git show Marka nie pokazywał łatek na mój użytek. Jego polecenie pomija -p lub --patch, ale aby być całkowicie pewnym pominięcia diff, można użyć: --no-patch. (na git v2.7.1 / mac)
AnneTheAgile
13

To nie jest ładne, ale możesz utworzyć skrypt lub alias, który robi coś takiego:

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done
Mark Longair
źródło
Czy istnieje powód, aby nie zamienić git for-each-ref refs/tags/ --format='%(refname)'z git tag -l?
Shai Berger
@ShaiBerger: w praktyce tak nie uważam - myślę, że po prostu myślałem, że git tagjest to porcelana i git for-each-refhydraulika, więc wyniki tego ostatniego powinny być bardziej stabilne do pisania skryptów.
Mark Longair
10

Tylko ostatnia wiadomość znacznika:

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6
gaRex
źródło
2
Dla każdego innego, kto spotka się z tym w Google: Jeśli chcesz wyświetlić wiadomość z określonego tagu: git cat-file -p <tag> | tail -n +6
Kit Peters
6

Użyj opcji --format

git tag -l --format='%(tag) %(subject)'
Александр Туманов
źródło
2

Wolę to robić w wierszu poleceń, ale jeśli nie przeszkadza ci interfejs internetowy i korzystasz z GitHub, możesz odwiedzić https://github.com/user/repo/tagsi kliknąć „...” obok każdego znacznika, aby wyświetlić jego adnotację.

agouge
źródło