Jak mogę wyświetlić listę wszystkich tagów w moim repozytorium Git według daty ich utworzenia?
128
Potrzebuję sposobu, aby wyświetlić listę wszystkich tagów w moim systemie przed datą ich utworzenia, ale nie jestem pewien, czy mogę uzyskać te dane za pośrednictwem git-log. Pomysły?
Czy masz na myśli, że chcesz otrzymać listę wszystkich tagów w kolejności ich utworzenia?
lithuak
3
FYI (1.) To pytanie dotyczy listy tagów ANNOTATED według daty. (2.) Listę znaczników LIGHTWEIGHT według daty można znaleźć tutaj . (3.) Aby uzyskać pomocne przypomnienie o różnicy między lekkimi tagami Git a tagami z adnotacjami, przejdź tutaj .
Trevor Boyd Smith
@TrevorBoydSmith: To nie jest do końca poprawne. Różnica polega na tym, że (2) wymienia wszystkie tagi według daty popełnienia z następujących oznaczone popełnić , niniejsza strona zawiera rozwiązania, które sortować według daty oznaczone (choć tylko dla adnotacjami tagów, ponieważ git nie data store oznaczone lekkich tagów).
David P
Odpowiedzi:
174
Sortowanie według daty utworzenia tagu działa z opisanymi i lekkimi tagami:
Niesamowite. git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tagszrobił dokładnie to, czego potrzebowałem. Dzięki!
Jon Ursenbach
21
Rozwiązanie @DrorCohen, które działa dla lekkich tagów: stackoverflow.com/questions/6900328/… . Wklejam tutaj dla łatwiejszego odniesienia: git log --tags --simplify-by-decoration --pretty = "format:% ai% d"
Gilead
5
%(contents)W razie potrzeby można użyć do dodania adnotacji, np.git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
Tim Diggins
7
Albo nawet trochę czyściej:git for-each-ref --sort=taggerdate --format '%(tag)'
Baris Wanschers,
4
--sort=creatordatedziała zarówno dla tagów z adnotacjami, jak i bez adnotacji, ale --sort=taggerdatewydaje się działać tylko z tagami z adnotacjami. testowane przy użyciugit version 2.16.3
W przypadku obiektów zatwierdzonych i oznaczonych, pola specjalne creatordatei creator
będą odpowiadały odpowiedniej krotce data lub nazwa-e-mail-data z pól committerlub, w taggerzależności od typu obiektu. Są one przeznaczone do pracy nad połączeniem oznaczonych i lekkich tagów .
Wielkie dzięki. Zastanawiałem się, dlaczego niektóre daty są puste. Podejrzewałem już lekkie metki. Cieszę się, że nie muszę odtwarzać tagów dzięki creatordate!
Aby zobaczyć pełną historię z zależnościami i zatwierdzeniami liniowymi w paski (tylko niezbędne zdarzenia, takie jak tagowanie i rozgałęzianie / scalanie):
Dla leniwych: git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"i dla mnie to działa najlepiej.
Mateusz
1
Zauważ, że jest to uporządkowane według daty zatwierdzenia, a nie daty utworzenia znaczników. (Obecnie) najwyżej oceniana odpowiedź od Josha Lee porządkuje według daty utworzenia tagu.
Nathanial Woolls
13
git tag --sort=-taggerdate
Zgodnie ze stroną podręcznika „Prefiks - sortowanie w porządku malejącym wartości”.
git tagużywa tych samych kluczy sortowania git-for-each-ref, co, gdzie klucze są dokumentowane.
Jeśli nie podoba ci się domyślne sortowanie tagów, możesz --sort=creatordatena przykład posortować według daty za pomocą opcji . Zobacz odpowiedź VonC, aby uzyskać więcej informacji.
Trochę zaciemnione. ... W tagach z adnotacjami „committerdate” jest puste, podczas gdy w lekkich tagach „taggerdate” jest puste. Aby obejść ten problem, „* committerdate” mówi Gitowi, aby odwoływał się do dat z oryginalnego obiektu commit, gdy jest on lekki. ...
ingyhere
Zamiast tego użycie „creatordate” powinno skutecznie zrobić to samo.
Odpowiedzi:
Sortowanie według daty utworzenia tagu działa z opisanymi i lekkimi tagami:
źródło
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags
zrobił dokładnie to, czego potrzebowałem. Dzięki!%(contents)
W razie potrzeby można użyć do dodania adnotacji, np.git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordate
działa zarówno dla tagów z adnotacjami, jak i bez adnotacji, ale--sort=taggerdate
wydaje się działać tylko z tagami z adnotacjami. testowane przy użyciugit version 2.16.3
Git 2.8 (marzec 2016) dokumentuje inną opcję sięgającą wstecz do gita 1.4.4 (październik 2006) .
Zobacz commit e914ef0 (05 stycznia 2016) autorstwa Erica Wonga (
ele828
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 108cb77 , 20 stycznia 2016 r.)Zobacz nowe
Documentation/git-for-each-ref.txt
Więc używanie
creatordate
działa z tagami:Lub:
Jak szczegółowo opisałem w „ Jak sortować tagi git według kolejności ciągów wersji w postaci rc-XYZW? ”, Możesz dodać porządek sortowania do
git tag
(od Git 2.0 czerwiec 2014).Ta kolejność sortowania obejmuje jako nazwę pola (wymienioną w
git for-each-ref
) taggerdate . To pozwala nagit tag --sort=taggerdate
(wspomniane przez DarVar poniżej )Na przykład w
git/git
repozytorium wyświetliv2.10.0
tag jako ostatni:Domyślna kolejność nie (
git tag
):źródło
creatordate
!Również ładne wyjście z (bez pola daty):
Aby zobaczyć pełną historię z zależnościami i zatwierdzeniami liniowymi w paski (tylko niezbędne zdarzenia, takie jak tagowanie i rozgałęzianie / scalanie):
źródło
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"
i dla mnie to działa najlepiej.Zgodnie ze stroną podręcznika „Prefiks - sortowanie w porządku malejącym wartości”.
git tag
używa tych samych kluczy sortowaniagit-for-each-ref
, co, gdzie klucze są dokumentowane.źródło
Ta jednowierszowa wyświetla daty i tagi bez problemu.
Wynik:
Jeśli nie podoba ci się domyślne sortowanie tagów, możesz
--sort=creatordate
na przykład posortować według daty za pomocą opcji . Zobacz odpowiedź VonC, aby uzyskać więcej informacji.źródło
Aby całkowicie posortować tagi z adnotacjami i lekkie tagi na podstawie daty zatwierdzenia, używam:
To polecenie wyświetli wszystkie znaczniki i powiązany identyfikator obiektu zatwierdzenia, w porządku chronologicznym.
źródło
Dzięki Git
version 2.10.0.windows.1
git tag --sort=taggerdate
źródło
Następujące elementy zależą od zatwierdzenia, więc nie ma znaczenia, czy zawiera informacje o dacie z zatwierdzeniem:
Powyższa odpowiedź Josha Lee opiera się na dacie tagu, aby uzyskać poprawną kolejność.
źródło
tac
- może zmienić je namore
. W każdym razie Twoje polecenie zadziałało świetnie - dzięki!Opierając się na wspomnianych wcześniej metodach, chciałem również zobaczyć aktualną datę tagu na liście, więc moja wersja użytkowa to:
źródło