我已使用标记“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)
有谁知道这背后的原因?我该如何解决这个问题?
答案 0 :(得分:6)
您可能使用了“轻量级”标签。默认情况下,git describe
仅使用标记对象来描述提交,而使用--tags
时,它将使用refs/tags
下的任何引用,即使它们直接指向提交而不是标记对象。
要创建标记对象,您必须使用-a
之前的-s
或-u
或git 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