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)?To zadziałało dla mnie
git describe --tags --abbrev=0
źródło
Pokaż wszystkie tagi na bieżącym HEAD (lub zatwierdzeniu)
źródło
git describe
to polecenie porcelany , którego należy unikać:http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
Zamiast tego użyłem:
źródło
^0
dla zatwierdzeń, które odpowiadają znacznikom (np. Dla danych1.0
wyjściowych znacznika it1.0^0
). Czy jest jakiś sposób, aby mieć tylko wyjście Git1.0
, czy powinienem do tego użyć sed?Kiedy sprawdzasz tag, masz tak zwaną „odłączoną głowę” . Zwykle zatwierdzenie HEAD Gita jest wskaźnikiem do gałęzi, którą aktualnie wypisałeś. Jeśli jednak wypisujesz coś innego niż gałąź lokalna (na przykład tag lub gałąź zdalna), masz „odłączoną głowę” - tak naprawdę nie jesteś w żadnej gałęzi. Nie powinieneś dokonywać żadnych zatwierdzeń, gdy jesteś na odłączonej głowie.
Sprawdzanie tagu jest w porządku, jeśli nie chcesz wprowadzać żadnych zmian. Jeśli tylko badasz zawartość plików lub chcesz zbudować swój projekt na podstawie znacznika, możesz
git checkout my_tag
z nimi pracować i pracować z nimi, o ile nie popełnisz żadnych zmian . Jeśli chcesz rozpocząć modyfikowanie plików, powinieneś utworzyć gałąź na podstawie znacznika:utworzy nowy oddział o nazwie
my_tag_branch
zaczynając odmy_tag
. Zmiany w tej gałęzi są bezpieczne.źródło
git log --decorate
Dzięki temu dowiesz się, jakie referencje wskazują na aktualnie sprawdzone zatwierdzenie.
źródło