我目前正在使用具有多个分支的存储库。
当我创建标签时,该标签是否指向当时的分支?
换句话说:每当我创建一个标签时,我是否需要切换到该分支内的所需分支和标签,以便标签在该时间点引用该分支?
答案 0 :(得分:139)
CharlesB's answer和helmbert's answer都很有帮助,但我花了一些时间来理解它们。 这是另一种方式:
git show <tag>
以查看标记的详细信息不包含对任何分支的引用,只包含标记指向的提交的ID。
6f6b5997506d48fc6267b0b60c3f0261b6afe7a2
)git tag v0.1.0 # tags HEAD of *current* branch
git tag v0.1.0 develop # tags HEAD of 'develop' branch
git describe
描述当前分支时:
git describe [--tags]
描述了自此分支历史记录中最新[可能轻量级]标记以来提交的当前分支。git describe
引用的标记可能无法反映最近创建的标记整体 。答案 1 :(得分:115)
如果您通过例如
创建标记git tag v1.0
标记将引用您当前所在分支的最新提交。您可以更改分支并在那里创建标记。
您也可以在标记时引用其他分支,
git tag v1.0 name_of_other_branch
将为另一个分支的最新提交创建标记。
或者您可以通过直接引用某些提交的SHA1将标记放在任何地方,无论哪个分支
git tag v1.0 <sha1>
答案 2 :(得分:30)
标签和分支完全不相关,因为标签引用特定的提交,而分支是对最后一次提交历史记录的移动引用。分店去,标签留。
因此,当您标记提交时,如果您向他提供要标记的SHA1,则git不关心检出哪个提交或分支。
我甚至可以通过引用分支进行标记(然后它将标记分支的尖端),然后说分支的提示位于其他地方(例如,使用git reset --hard
),或者删除分支。我创建的标签不会移动。
答案 3 :(得分:5)
在没有任何其他参数的情况下调用git tag <TAGNAME>
时,Git将从您当前的HEAD(即当前分支的HEAD)创建一个新标记。在向此分支添加其他提交时,分支HEAD将跟上这些新提交,而标记始终引用相同的提交。
调用git tag <TAGNAME> <COMMIT>
时,您甚至可以指定用于创建标记的提交。
无论如何,标签仍然只是某个提交(不是分支)的“指针”。
答案 4 :(得分:3)
我们可以为过去的提交创建一个标记:
git tag [tag_name] [reference_of_commit]
例如:
git tag v1.0 5fcdb03
答案 5 :(得分:2)
如果要标记您所在的分支,请键入:
git tag <tag>
并通过以下方式推动分支:
git push origin --tags
答案 6 :(得分:0)
如果您要从分支创建标签,例如release/yourbranch
等
然后您应该使用类似的
git tag YOUR_TAG_VERSION_OR_NAME origin/release/yourbranch
在创建了正确的标签后,如果您希望将标签推送到远程,则使用命令
git push origin YOUR_TAG_VERSION_OR_NAME