在以下几行中:
$ git tag -n1
v1.8 Tagged the day before yesterday
v1.9 Tagged yesterday
v2.0 Tagged today
$ git describe
v1.9-500-ga6a8c67
$ 有没有人能解释为什么"git describe“不使用v2.0标签,以及如何修复这个问题?v2.0标签已经被推送了,所以我猜我不能简单地删除并重新添加它。
发布于 2010-11-11 20:48:29
默认情况下,git describe仅使用带注释的标记。指定--tags选项,使其也使用轻量级标记。
确保您已经检出了正确的提交(git rev-parse HEAD)。带注释的标记是用git tag -a创建的。如果执行git show <tagname>,并且只看到提交,则它是一个轻量级标记;如果您看到附加的标记消息,则它是一个带注释的标记。
发布于 2012-01-11 18:53:30
当这种情况发生在我们身上时,这是一个两个标签应用于同一提交的情况。您可以通过运行以下命令来确定是否为这种情况
# git log --oneline --decorate=short
deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber这里有两个标记,一个用于版本19,另一个用于20。20是在19之后标记的,但用于相同的提交。在这种情况下,返回describe
# git describe --tags
v1.1.0.19.0我不知道它为什么这样做,但这就是它处理重复标签的方式。
另一种可能发生这种情况的情况是,如果你在一个分支中有一个更“靠近”你的标签。这种情况已经在this blog post中得到了解释。
发布于 2016-09-21 16:59:37
问题是git tag显示所有分支中的所有标签,而git describe仅在提交时使用标签,这些标签在当前分支中可用。
这里有一个例子(实际上我来这里的原因):
$ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2它显示可用的最新标记是v0.4.2,但这是我对git describe的输出
$ git describe --tags
v0.4.0-2-acd334c我在开发分部。当我深入研究日志时,我确实看到最新的标签在当前分支上不可用:
$ 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因此,在我的案例中,开发人员决定创建一个新的发布分支,专门用于标记发布,这导致开发分支不再与标记保持最新。
希望这会有所帮助,并感谢@eis关于检查日志的想法。
https://stackoverflow.com/questions/4154485
复制相似问题