W przypadku wydań zwykle oznaczam coś w rodzaju v1.1.0. Podczas tworzenia skryptu tworzę plik fwVersion.c, który zawiera aktualne informacje git. Obecnie mam w pliku informacje o zmianach i gałęziach, ale chciałbym dodać znacznik.
czy to możliwe?
Sprawdź w dokumentacji git describe
. Znajduje najbliższy znacznik do danego zatwierdzenia (jest to znacznik wskazujący na przodka zatwierdzenia) i opisuje to zatwierdzenie za pomocą znacznika.
Jeśli chcesz tylko wiedzieć, czy zatwierdzenie jest wskazywane przez tag, możesz sprawdzić wynik:
git describe --exact-match <commit-id>
git describe --tags <commit-id>
dla tagów bez adnotacjigit describe --all --exact-match `git rev-parse HEAD`
git describe --tags --abbrev=0 REV
przyda się, gdy nie chcesz mieć śmieci na tagu.git describe --all
(dla aktualnie sprawdzonego zatwierdzenia) lubgit describe --all <commit>
zawsze robiłem wszystko, czego kiedykolwiek chciałem.Jeśli chcesz, to pierwszy znacznik zawierający zatwierdzenie, to:
daje najlepszą odpowiedź IMO. Jeśli masz częste tagi niż używanie „git tag --contains” na starym zatwierdzeniu w dużym repozytorium, może to zająć trochę czasu, a otrzymasz wszystkie tagi, które zawierają to zatwierdzenie.
Ta forma opisu gita działa bardzo szybko i daje pojedynczą wartość wyjściową, która jest pierwszym znacznikiem zawierającym zatwierdzenie i jak daleko jest wstecz.
źródło
Co powiesz na to?
git tag --points-at <commit-id>
Daje ci wszystkie tagi, które ma dane zatwierdzenie (podczas gdy
git describe
daje tylko jeden) i nie zawiera tagów na podrzędnych zatwierdzeniach (tak jakgit tag --contains
robi).źródło
Możesz znaleźć te informacje w instrukcji
źródło
Znalazłem kombinację obu najlepszych odpowiedzi, aby dać mi to, czego chciałem:
To daje ci tag, który jest TYLKO dla tego zatwierdzenia i dla tych bez adnotacji. Przydatne, gdy chcesz znaleźć tagi i nie martwić się wtedy o usunięcie formatowania (na przykład dla Jenkinsa).
na przykład.
$ git describe --tags --exact-match head~2
Daje Ci:
źródło
Konsolidacja niektórych odpowiedzi:
git tag --contains [<ref>]
i
git tag --points-at [<ref>]
Lub tylko
git tag
zachowują się tak samo, wypisując wszystkie (i wszystkie) znaczniki dla określonego ref lub bieżącego zatwierdzenia, jeśli nie zostały określone.
git describe --tags [<ref>]
gdzie
<ref>
domyślnie jest to aktualne zatwierdzenie, kończy z 128, jeśli żadne znaczniki nie są skojarzone z zatwierdzeniem, i drukuje znacznik powiązany z zatwierdzeniem (wydaje się, że nie ma wzoru).git describe [<ref>]
zachowuje się tak samo jak with,--tags
z tą różnicą, że drukuje tylko etykiety z adnotacjami.Podanie opcji
--contains
todescribe
spowoduje wydrukowanie znacznika a, który jest powiązany z przodkiem określonego zatwierdzenia. Na przykładźródło