2

我已经用标签“Release_V1.0.0.4”标记了我的存储库。但这是我从“git describe”和“git describe origin”得到的。

[root pds_series]# git describe

Release_V1.0.0.2-22-g0859de9

[root pds_series]# git describe origin

Release_V1.0.0.2-18-gce2b24c

使用“git describe --all”和“git describe --tags”我得到了正确的标签。

[root pds_series]# git describe --all

标签/Release_v1.0.0.4

[root pds_series]# git describe --tags

发布_v1.0.0.4

另外,通过以下命令,我得到了正确的标签。

[root pds_series]# git log --pretty=format:'%ad %h %d' --abbrev-commit --date=short -1

2012-11-15 0859de9(HEAD,Release_v1.0.0.4,master)

有谁知道这背后的原因?我该如何解决这个问题?

4

1 回答 1

7

您可能使用了“轻量级”标签。默认情况下git describe,仅使用标记对象来描述提交,而使用--tags它时将使用任何引用,refs/tags即使它们直接指向提交而不是标记对象。

要创建标签对象,您必须使用-a(annotated) 或-s( -usigned) 选项之一git tag,否则将创建轻量级标签(直接指向提交的引用)。

要查看两个标签之间的区别,请尝试:

git cat-file -t Release_V1.0.0.2

和:

git cat-file -t Release_v1.0.0.4

On 可能会说“tag”,而另一个会说“commit”。

要解决此问题,您可以使用-fand (say)重新创建标签-a

git tag -f -a Release_v1.0.0.4 Release_v1.0.0.4
于 2012-11-16T08:12:48.793 回答