Mam kilka niezanotowanych znaczników w repozytorium i chcę się dowiedzieć, do których zatwierdzeń wskazują. Czy istnieje polecenie, które wyświetli tylko tagi i ich zatwierdzenia SHA? Sprawdzanie tagu i patrzenie na HEAD wydaje mi się trochę zbyt pracochłonne.
Aktualizacja
Po przejrzeniu odpowiedzi zdałem sobie sprawę, że tak naprawdę chciałem po prostu spojrzeć na historię prowadzącą do tagu, co git log <tagname>
jest wystarczające.
Odpowiedź oznaczona jako odpowiedź jest przydatna do uzyskania listy tagów i ich zatwierdzeń, o co prosiłem. Przy odrobinie włamań do powłoki jestem pewien, że można je przekształcić w komunikat SHA + Commit.
git show-ref
pokazuje sha tagu, a nie sha wersji repo. $ Git show-ref Test 08b9c774ab20e5bdb638339cf4ea2c124b0dae54 bibl / tagów / test $ git checkout HEAD Test jest teraz w c7f8831 ... $ git checkout 08b9c77 HEAD jest teraz w c7f8831 ...--dereference
Odpowiedzi:
Jednym ze sposobów na to byłoby
git rev-list
. Następujące dane wyjściowe zatwierdzą, do którego wskazuje znacznik:Możesz dodać go jako alias,
~/.gitconfig
jeśli często go używasz:A potem nazwij to:
źródło
git rev-parse <tag>
? Czygit rev-list -1 <tag>
?git rev-parse $TAG
zwraca SHA1 obiektu znacznika, a nie zatwierdzenie, na które wskazuje.git rev-list -1
działa jednak.git rev-parse $TAG^{commit}
lubgit rev-parse $TAG^{}
aby odrejestrować tag z adnotacjami / podpisamigit rev-list $TAG --max-count=1
git tag -a
lubgit tag -s
, wtedygit rev-parse <tag>
dałby ci SHA-1 samego obiektu znacznika , podczas gdygit rev-list -1 <tag>
dałby SHA-1 zatwierdzenia (rewizji), na który wskazuje, tak samo jakgit rev-parse <tag>^{commit}
. HTH.Na przykład
git show-ref --abbrev=7 --tags
pokaże ci coś takiego:źródło
.git/packed-refs
lub.git/refs/tags/*
git tag --verbose
ich też pokazywać?-d
flagę, aby uzyskać odwołanie do zatwierdzenia (w drugim wierszu).git show-ref
zachowują się inaczej w przypadku dwóch różnych typów tagów, nie jest oczywisty ani powszechny.Po prostu użyj
git show <tag>
Jednak zrzuca także zatwierdzenia różnic. Aby pominąć te różnice, użyj
git log -1 <tag>
. (Dzięki @DolphinDream i @demisx!)źródło
git show <tag>
pokazuje różnicę, a nie zatwierdzenie, do którego wskazuje znacznik.git show
zrzuca o wiele więcej rzeczy na ekranie, które nie muszą tam być. Ukrywa rzeczywistą wartość skrótu, której szuka. Lepszym poleceniem jestgit log -1 [tag-name]
lubgit log -1 --pretty=oneline [tag-name]
jeśli chcesz onelinerów.W moim repozytorium
git show-ref TAG
pokazuje hash znacznika, a nie skrót zatwierdzenia, na który wskazuje.git show-ref --dereference TAG
pokazuje dodatkowo wskazanie zatwierdzenia.źródło
Od Igora Zevaki :
Podsumowanie
Ponieważ istnieje około 4 prawie równie akceptowalnych, ale różnych odpowiedzi, podsumuję wszystkie różne sposoby skórowania tagu.
git rev-list -1 $TAG
( odpowiedź ).git rev-list
wyprowadza zatwierdzenia, które prowadzą do$TAG
podobnego,git log
ale pokazującego tylko SHA1 zatwierdzenia.-1
Ogranicza moc do popełnienia na to wskazuje.git show-ref --tags
( odpowiedź ) pokaże wszystkie tagi (lokalne i pobrane ze zdalnego) oraz ich SHA1.git show-ref $TAG
( odpowiedź ) pokaże tag i jego ścieżkę wraz z SHA1.git rev-parse $TAG
( odpowiedź ) pokaże SHA1 niezanotowanego tagu.git rev-parse --verify $TAG^{commit}
( odpowiedź ) pokaże SHA1 zarówno z adnotacjami, jak i bez adnotacji. W systemie Windowsgit rev-parse --verify %TAG%^^^^{commit}
(cztery czapki).cat .git/refs/tags/*
lubcat .git/packed-refs
( odpowiedź ) w zależności od tego, czy tag jest lokalny, czy pobrany ze zdalnego.źródło
Posługiwać się
(co zwróci SHA-1 zatwierdzenia nawet dla tagu z adnotacjami).
git show-ref <tag>
działałby również, jeśli<tag>
nie ma adnotacji. I zawsze tak jestgit for-each-ref
(szczegóły w dokumentacji).źródło
git rev-parse <tag>~0
który również wydaje się działać i nie wymaga specjalnego ucieczki w systemie Windows (na którym zamiast jednego potrzebne są cztery czapki (^)). Sufiks~<number>
podaje <numer>-ty zatwierdzenie nadrzędne, dlatego~0
zwraca sam zatwierdzenie. Btw,^0
jest także ważnym skrótem dla^{commit}
sufiksu wersji.Co powiesz na to:
LUB
źródło
Aby uzyskać sha / hash zatwierdzenia, do którego odnosi się znacznik (nie sha znacznika):
git rev-list -1 <tag>
źródło
Chciałbym również znać „właściwą” drogę, ale w międzyczasie możesz to zrobić:
źródło
git show --oneline mytag | head -1
Mimo że jest to dość stare, pomyślałem, że zwrócę uwagę na fajną funkcję, którą właśnie znalazłem dla listowania tagów z zatwierdzeniami:
Wyświetli gałęzie, które kończą się / rozpoczynają od zatwierdzenia, oraz tagi dla zatwierdzeń.
źródło
Równie dobrze można uzyskać łatwiejszy do zinterpretowania obraz tego, do czego wskazują tagi
a następnie przewiń do znacznika, którego szukasz
/
.Bardziej kompaktowy widok (
--pretty=oneline
) plus wszystkie głowice (-a
) również mogą pomóc:Wygląda nieco przerażająco, ale w
~/.gitconfig
razie potrzeby można go także zmienić na inny .źródło
Krótka odpowiedź po Git-2
Wiem, że to pytanie jest tutaj już od dłuższego czasu. A odpowiedź CB Bailey jest w 100% poprawna:
git show-ref --tags --abbrev
Ten bardziej mi się podoba, ponieważ wykorzystuje
git tag
:Prosty. Krótki.
PS pseudonim jak w
git taglist
przypadku tego polecenia:źródło
Z listy mailingowej git , oto sposób na uzyskanie listy skrótów zatwierdzania dla tagów z automatycznym usuwaniem odniesień dla tagów z adnotacjami:
źródło
To nie pokazuje nazw plików, ale przynajmniej czujesz się jak w repozytorium.
Każdy plik w tym katalogu zawiera zatwierdzenie SHA wskazujące na zatwierdzenie.
źródło
.git/packed-refs
działał jednak.Chciałbym również znać właściwą drogę , ale zawsze możesz zajrzeć do:
lub:
źródło
git rev-list
.Otrzymasz bieżący skrót SHA1
Skrót Commit Hash
Zatwierdź skrót
źródło
git log <tag> -n 1 --pretty=%H
działaJeśli chcesz zobaczyć szczegóły znacznika SOMETAG (tagger, date itp.), Skrót mieszania, na który wskazuje i trochę informacji o zatwierdzeniu, ale bez pełnego różnicowania, spróbuj
Przykładowe dane wyjściowe:
źródło
Mam więc mnóstwo folderów wydań, w których foldery te można wyewidencjonować z jednego z kilku różnych repozytoriów i mogą to być gałęzie deweloperskie, qa lub master, albo wydania produkcyjne, wyewidencjonowane ze znacznika, a znacznik może być z adnotacjami czy nie. Mam skrypt, który spojrzy na folder docelowy i otrzyma odpowiedź w formie -. Problem polega na tym, że różne wersje programu git zwracają inny status dla kasy.
Więc znalazłem
git show-ref --tags
działał na początku, z wyjątkiem tagów z adnotacjami. Jednak dodanie -d dodało osobny wpis do listy znaczników, jeden dla znacznika, drugi dla adnotacji (zatwierdzenie adnotacji zostało zidentyfikowane jako ^ {}, które usunąłem z sed).To jest rdzeń mojego skryptu dla każdego, kto tego chce:
źródło
Można użyć poniżej, da hash zatwierdzenia
git show -s --format=%H <tag>^{commit}
Jeśli wymagany jest skrót skrótu zatwierdzenia,
git show -s --format=%h <tag>^{commit}
źródło