Git描述了给出不同的标签

时间:2012-11-16 08:06:38

标签: git git-tag git-describe

我已使用标记“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

Release_v1.0.0.4

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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

要创建标记对象,您必须使用-a之前的-s-ugit tag(已签名)选项之一,否则请使用轻量级标记(a将创建直接指向提交的引用。

要查看两个代码之间的区别,请尝试:

git cat-file -t Release_V1.0.0.2

git cat-file -t Release_v1.0.0.4

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

要解决此问题,您可以使用-f和(例如)-a重新创建代码。

git tag -f -a Release_v1.0.0.4 Release_v1.0.0.4