gpt4 book ai didi

Git 标签,为什么 Remote 中有这个重复的标签?

转载 作者:IT王子 更新时间:2023-10-29 01:17:00 26 4
gpt4 key购买 nike

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。

最佳答案

Git 中有两种类型的标签:“轻量级”和“带注释”。

轻量级标签只是 refs/tags/ 中的引用指向其他对象的 namespace 。它们是使用 git tag <tagname> [object] 创建的没有-a , -m , -F , -s , 或 -u .

带注释的标签实际上是一种单独的 Git 对象(tag object),它指向其他一些对象。标记对象存储提交者信息、作者信息、一条消息(类似于 commit objects )并且它们指向任何单个其他对象(不同于提交对象,因为提交指向一个 tree object 和零个或多个其他提交对象)。

当你有一个带注释的标签时,你通常也会有一个指向它的引用。从技术上讲,这个 ref 本身就是一个“轻量级”标签,但我们通常不会单独描述它们。

通常,这两种标记都指向提交,但它们可以指向任何类型的 Git 对象(标记、提交、树或 blob)。 git.git repository refs/tags/junio-gpg-pub 指向包含维护者的 GPG 公钥的 blob。另外, torvalds/linux-2.6.git refs/tags/v2.6.11 指向一棵树。尽管技术上允许指向非提交对象的标记,但它们可能会破坏或混淆某些工具,因此应尽可能避免使用它们。


语法 ^{}后缀(在 gitrevisions(7) 中描述)是标签取消引用语法(有时称为“剥离标签”语法)。对于标记对象,它计算标记对象指向的第一个非标记对象(它将递归地遵循标记对象链,直到找到非标记对象)。对于非标签对象,它与没有 ^{} 的意思相同后缀。

refs/tags/Prod_Release_2.3中央存储库中的 ref 指向名为 30bd19ef190cf664356c715b56044ce739f07468 的标签对象.
该标记对象最终指向其他一些名为 4ae15ee04c2c41bfc7945e66f4effc746d52baec 的非标记对象。 (可能是一个提交)。

因此,refs/tags/Prod_Release_2.3^{}解析为 4ae15ee04c2c41bfc7945e66f4effc746d52baec .

关于Git 标签,为什么 Remote 中有这个重复的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com