Odpowiedzi:
Jeśli tworzysz tag np
git tag v1.0
znacznik będzie odnosił się do ostatniego zatwierdzenia gałęzi, w której się aktualnie znajdujesz. Możesz tam zmienić gałąź i stworzyć tag.
Możesz też po prostu odnieść się do innej gałęzi podczas tagowania,
git tag v1.0 name_of_other_branch
który utworzy znacznik do ostatniego zatwierdzenia innej gałęzi.
Lub możesz po prostu umieścić tag w dowolnym miejscu, bez względu na gałąź, odwołując się bezpośrednio do SHA1 jakiegoś zatwierdzenia
git tag v1.0 <sha1>
Odpowiedź Charlesa B. i Helmberta są pomocne, ale zrozumienie ich zajęło mi trochę czasu. Oto inny sposób ujęcia tego:
git show <tag>
aby zobaczyć szczegóły tagu, nie zawiera odniesienia do żadnych gałęzi, tylko identyfikator zatwierdzenia, na który wskazuje tag.
6f6b5997506d48fc6267b0b60c3f0261b6afe7a2
:)git tag v0.1.0 # tags HEAD of *current* branch
git tag v0.1.0 develop # tags HEAD of 'develop' branch
git describe
do opisu bieżącej branży:
git describe [--tags]
opisuje bieżącą gałąź pod względem zatwierdzeń od ostatniego [prawdopodobnie lekkiego] znacznika w historii tej gałęzi .git describe
, do którego odwołuje się, może NIE odzwierciedlać ogólnie ostatnio utworzonego tagu .Tagi i gałąź są całkowicie niepowiązane, ponieważ znaczniki odnoszą się do konkretnego zatwierdzenia, a gałąź jest ruchomym odniesieniem do ostatniego zatwierdzenia w historii. Gałęzie znikają, tagi pozostają.
Więc kiedy oznaczysz zatwierdzenie, git nie dba o to, który zatwierdzenie lub gałąź są wyewidencjonowane, jeśli podasz mu SHA1 tego, co chcesz oznaczyć.
Mogę nawet oznaczyć, odwołując się do gałęzi (oznacza to wtedy końcówkę gałęzi), a później powiedzieć, że końcówka gałęzi znajduje się gdzie indziej ( git reset --hard
na przykład) lub usunąć gałąź. Jednak utworzony przeze mnie tag nie będzie się poruszał.
Dzwoniąc po prostu git tag <TAGNAME>
bez żadnych dodatkowych parametrów, Git utworzy nowy tag z twojego aktualnego HEAD (tj. HEAD twojej aktualnej gałęzi). Dodając kolejne zatwierdzenia do tej gałęzi, gałąź HEAD będzie nadążać za tymi nowymi zatwierdzeniami, podczas gdy znacznik zawsze odnosi się do tego samego zatwierdzenia.
Podczas wywoływania git tag <TAGNAME> <COMMIT>
możesz nawet określić, którego zatwierdzenia użyć do utworzenia tagu.
Niezależnie od tego, znacznik jest nadal po prostu „wskaźnikiem” do określonego zatwierdzenia (a nie gałęzi).
Możemy stworzyć tag dla jakiegoś wcześniejszego zatwierdzenia:
git tag [tag_name] [reference_of_commit]
na przykład:
git tag v1.0 5fcdb03
Jeśli chcesz stworzyć tag z gałęzi, która jest podobna do release/yourbranch
itp. Następnie powinieneś użyć czegoś w rodzaju
git tag YOUR_TAG_VERSION_OR_NAME origin/release/yourbranch
Po utworzeniu odpowiedniego tagu, jeśli chcesz przekazać tag do zdalnego, użyj polecenia
git push origin YOUR_TAG_VERSION_OR_NAME