Git标签只适用于当前分支吗?
我目前正在使用具有多个分支的存储库。
当我创建一个标签时,该标签是否指向当时的分支?
换句话说:每当我创建一个标签时,是否需要切换到该分支内的所需分支和标签,以便该标签在该时间点引用该分支?
如果您通过例如创建标签
git tag v1.0
该标记将引用您当前所在分支的最近提交。 您可以更改分支并在那里创建标签。
您也可以在标记时参考其他分支,
git tag v1.0 name_of_other_branch
这将创建标签到另一个分支的最近提交。
或者你可以把标签放在任何地方,不管哪个分支,直接引用某个提交的SHA1
git tag v1.0 <sha1>
CharlesB的回答和Helmbert的回答都很有帮助,但花了我一段时间才明白它们。 这是另一种说法:
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
引用的标签可能并不反映最近创建的整体标签 。 标签和分支是完全不相关的,因为标签引用了特定的提交,而分支是对历史上次提交的移动引用。 分支去,标签停留。
所以当你标记一个提交时,如果你提供了他想要标记的SHA1,那么git并不关心哪个提交或分支被检出。
我甚至可以通过引用一个分支来标记(它会标记分支的顶端),然后说分支的提示是在其他地方(例如git reset --hard
),或者删除分支。 然而,我创建的标签不会移动。