这个问题在这里已有答案:
假设我有一个带有标签1.2.3
和两个遥控器origin
和fork
的工作副本,每个带有标签1.2.3
,但这三个实际上都指向不同的提交。此外,所有这些都有一个分支1.2.3
。
是否有完全限定的路径(refspec)允许您引用1.2.3
(或类似的fork
)所知的origin
标签?
git checkout 1.2.3
将切换到当地的1.2.3
分支,并将git checkout tags/1.2.3
切换到当地的1.2.3
标签。但是有可能以某种方式检查1.2.3
的远程标签fork
吗?我试过像git checkout fork/tags/1.2.3
和git checkout refs/remotes/fork/tags/1.2.3
(pathspec错误),以及git checkout refs/remotes/fork/1.2.3
这样的东西,但它检查了该名称的分支,而不是标签。
获取标记失败:
git fetch --tags
From https://...
! [rejected] 1.2.3 -> 1.2.3 (would clobber existing tag)
这是否暗示Git不支持它?
与分支不同,Git不为每个远程命名空间标记。如果从任何远程获取标记,它们将存储在refs/tags/
名称空间中,类似于refs/heads/
,用于本地分支。远程分支没有等效的refs/remotes/<remote>/
命名空间。
所有包含标签的工具都可以直接使用refs/tags/
,所以即使您决定手动将某个远程标签添加到不同的命名空间(如您对问题的评论中所述),实际使用它们也会相当不舒服。但是,如果您想要检查某些遥控器的标签而不实际将它们作为正确的标签提供,则可以执行此操作。
人们认为人们在标记事物时会一起工作。如果您无法避免多个人创建具有不同内容的相同标记,您可能需要就标记命名方案(例如foo-1.1.2和bar-1.1.2)达成一致或根本不使用标记。