首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"git describe“忽略标签

"git describe“忽略标签
EN

Stack Overflow用户
提问于 2010-11-11 20:44:13
回答 4查看 35.2K关注 0票数 78

在以下几行中:

代码语言:javascript
复制
$ 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标签已经被推送了,所以我猜我不能简单地删除并重新添加它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-11 20:48:29

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

确保您已经检出了正确的提交(git rev-parse HEAD)。带注释的标记是用git tag -a创建的。如果执行git show <tagname>,并且只看到提交,则它是一个轻量级标记;如果您看到附加的标记消息,则它是一个带注释的标记。

票数 99
EN

Stack Overflow用户

发布于 2012-01-11 18:53:30

当这种情况发生在我们身上时,这是一个两个标签应用于同一提交的情况。您可以通过运行以下命令来确定是否为这种情况

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# git describe --tags
v1.1.0.19.0

我不知道它为什么这样做,但这就是它处理重复标签的方式。

另一种可能发生这种情况的情况是,如果你在一个分支中有一个更“靠近”你的标签。这种情况已经在this blog post中得到了解释。

票数 26
EN

Stack Overflow用户

发布于 2016-09-21 16:59:37

问题是git tag显示所有分支中的所有标签,而git describe仅在提交时使用标签,这些标签在当前分支中可用。

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

代码语言:javascript
复制
 $ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2

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

代码语言:javascript
复制
 $ git describe --tags
v0.4.0-2-acd334c

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

代码语言:javascript
复制
 $ 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关于检查日志的想法。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4154485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档