Git描述了给出不同的标签

Par*_*ngh 2 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)

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

CB *_*ley 6

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

要创建您必须使用一个标签对象-a(注释)或-s-u(签字)选项git tag,否则一个轻量级的标签将被创建(笔直地指向一个提交的引用).

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

git cat-file -t Release_V1.0.0.2
Run Code Online (Sandbox Code Playgroud)

和:

git cat-file -t Release_v1.0.0.4
Run Code Online (Sandbox Code Playgroud)

On可能会说"tag"而另一个会说"commit".

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

git tag -f -a Release_v1.0.0.4 Release_v1.0.0.4
Run Code Online (Sandbox Code Playgroud)