30bd19ef190cf664356c715b56044ce739f07468 refs/tags/Prod_Release_2.3
4ae15ee04c2c41bfc7945e66f4effc746d52baec refs/tags/Prod_Release_2.3^{}
以上是从 git ls-remote --tags
命令列出我中央仓库(裸)中的标签输出。对于 Prod_Release_2.3,我只期望有 1 个标签,但我不知道这个
Prod_Release_2.3^{}
是从哪里来的。在 centralrepo1 中,Prod_Release_2.3 的 id 与 centralrepo2 中的 Prod_Release_2.3^{} 的 id 相同,反之亦然。
在我的本地仓库中只有一个标签
Prod_Release_2.3
。是否有问题?还是这是按设计操作?
中央仓库托管在 Ubuntu 上,我在开发机上使用 msysgit。
whatever^{}
名称不存在作为ref(在refs/
命名空间下的条目);^{}
只是一个后缀,可以附加到任何修订名称(ref名称,(缩写)object哈希或其他计算修订名称等)以“剥离”tag objects,直到找到非标签object。假设已经推送了被标记的commit,C,那么推送新的注释标记将推送一个tag object(指向C)和一个新的ref(指向新的tag object),而轻量级标记仅会推送新的ref(指向C)。 - Chris Johnsenls-remote
显示这些^{}
伪refs,但它们实际上并不存在作为refs;您可以通过(例如)将git show-ref --tags
(实际标签refs)的输出与git ls-remote --tags .
(“wire protocol”报告的内容)进行比较来验证这一点。由于技术原因,“peeled tags”包含在“wire protocol”中,但它们并不存在作为实际的refs。但是,您可以将^{}
视为“引用”(因为它是命名特定对象的一种方式),只要您不使用该术语来表示“/refs”命名空间下的条目。 - Chris Johnsen