Edytuj : Jakub Narębski ma więcej git-fu. Następujące znacznie prostsze polecenie działa idealnie:
git describe --tags
(Lub bez, --tags
jeśli sprawdziłeś tag z adnotacjami. Mój tag jest lekki, więc potrzebuję --tagów).
oryginalna odpowiedź brzmi:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
Ktoś z większą ilością git-fu może mieć bardziej eleganckie rozwiązanie ...
Wykorzystuje to fakt, że git-log
raportowanie dziennika rozpoczyna się od tego, co sprawdziłeś. %h
drukuje skrót skrótu. Następnie git describe --exact-match --tags
znajduje znacznik (lekki lub z adnotacjami), który dokładnie pasuje do tego zatwierdzenia.
Powyższa $()
składnia zakłada, że używasz bash lub podobnego.
git describe
spowoduje wyświetlenie nazwy znacznika, jeśli jesteś dokładnie na (opatrzony adnotacjami) znaczniku, a<tag>-<n>-g<shortened sha-1>
jeśli nie, gdzie<n>
jest liczba zatwierdzeń od tego czasu<tag>
.--exact-match
do mojej odpowiedzi sekundy przed twoim komentarzem. Miło wiedzieć, że można go usunąć i nadal uzyskiwać dobre informacje z wejścia bardziej rozwścieczonego.git rev-parse HEAD
jest lepszym rozwiązaniem niżgit log -n1 --pretty='%h'
... ale dlaczego nie możesz po prostu pisaćHEAD
(lub nic, jakgit describe
domyślnie HEAD)?