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。
  • (提交ID(aka对象名称或SHA-1 ID)是由十六进制数字组成的40个字符的字符串,它们是提交内容的散列;例如: 6f6b5997506d48fc6267b0b60c3f0261b6afe7a2
  • 分支机构间接起作用
  • 在创建标签时 ,通过暗示标签将指向的提交
  • 未指定标签的目标,默认为当前分支的最近提交(又名HEAD); 例如:
  • git tag v0.1.0 # tags HEAD of *current* branch
  • 指定分支名称作为标签目标,默认为该分支最近的提交; 例如:
  • git tag v0.1.0 develop # tags HEAD of 'develop' branch
  • (正如其他人所指出的,您也可以明确指定一个提交ID作为标签的目标。)
  • 使用git describe来描述当前分支时:
  • git describe [--tags]描述了自该分支历史记录中最近[可能是轻量级]标记以来提交的当前分支。
  • 因此, git describe引用的标签可能并不反映最近创建的整体标签

  • 标签和分支是完全不相关的,因为标签引用了特定的提交,而分支是对历史上次提交的移动引用。 分支去,标签停留。

    所以当你标记一个提交时,如果你提供了他想要标记的SHA1,那么git并不关心哪个提交或分支被检出。

    我甚至可以通过引用一个分支来标记(它会标记分支的顶端),然后说分支的提示是在其他地方(例如git reset --hard ),或者删除分支。 然而,我创建的标签不会移动。

    链接地址: http://www.djcxy.com/p/27135.html

    上一篇: Do Git tags only apply to the current branch?

    下一篇: Do git tags get pushed as well?