"git describe"忽略了一个标签

kni*_*nap 58 git git-tag git-describe

在以下几行中:

$ git tag -n1
v1.8        Tagged the day before yesterday
v1.9        Tagged yesterday
v2.0        Tagged today
$ git describe
v1.9-500-ga6a8c67
$ 
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么"git describe"不使用v2.0标签,以及如何解决这个问题?v2.0标签已被推送,所以我猜我不能删除并重新添加它.

kni*_*ttl 77

git describe默认情况下仅使用带注释的标签.指定--tags使其使用轻量级标签的选项

确保你已经检查出正确的commit(git rev-parse HEAD).带注释的标签是用git tag -a.创建的.如果你这样做git show <tagname>而且你只看到提交,那么它是一个轻量级标签,如果你看到一个附加标签消息,它就是一个带注释的标签.

  • "git describe --tags"产生与上面相同的输出. (7认同)

eis*_*eis 19

当我们遇到这种情况时,就是两个标签应用于同一次提交的情况.你可以通过运行找到这种情况

# git log --oneline --decorate=short
deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber
Run Code Online (Sandbox Code Playgroud)

这里有两个标签,一个用于版本19,另一个用于20.20在19之后被标记,但是用于相同的提交.在这种情况下描述返回

# git describe --tags
v1.1.0.19.0
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样做,但这就是它似乎与重复标签一起使用的方式.

可能发生这种情况的另一种情况是,如果您在分支中有一个更接近您的标签.该案例已在此博客文章中进行了解释.


Afr*_*Afr 16

问题是git tag显示所有分支中的所有标记,而git describe仅使用当前分支中可用的提交标记.

这是一个例子(我实际来到这里的原因):

 $ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2
Run Code Online (Sandbox Code Playgroud)

它显示了可用的最新标签v0.4.2,但这是我输出的git describe:

 $ git describe --tags
v0.4.0-2-acd334c
Run Code Online (Sandbox Code Playgroud)

我正在开发分支.当我深入研究日志时,我确实看到当前分支上最新的标签不可用:

 $ git log --oneline --decorate=short | grep 'tag\:' | head -n3
acd334c (tag: v0.4.0) Merge pull request #1061
988fe5e (tag: v0.3.6) Merge pull request #859
5f97274 (tag: v0.3.5) Merge pull request #646
Run Code Online (Sandbox Code Playgroud)

所以在我的情况下,开发人员决定创建一个专门用于标记版本的新版本分支,这导致开发分支不再与标签保持同步.

希望通过检查日志来帮助并感谢@eis的想法.