如何在分离头部提交上使用git describe?

3
我有一个主分支,其中包含有注释的非轻量级标记提交。工作区处于分离头状态,即通过Jenkins Multibranch Pipeline检出后。
当我运行git describe时,我会得到一个很旧的标记名称,以及自那个标记以来非常多的提交次数(例如1.0.0-459-abc1234)。
当我运行git tag时,我会得到所有标记的列表,包括我感兴趣的最近的标记,例如3.1.03.2.0
我当时想做的是类似于git branch -r --contains HEAD这样的操作,以获取远程分支的名称,然后获取并检查它(运行的风险是我实际上正在检出一个比触发管道的提交晚的提交,但无论如何,它都被隔离到了拉取请求中...)或者只需运行git describe <remote_branch_name>。但两者都没有起作用。我不明白为什么Git更喜欢显示非常旧的标签而不是更新的标签,因为任何拉取请求都是从包含标记的master分支分支出来的(已经被标记的每个提交都保证可以在master分支上找到)。

如果你跟随当前(分离的)HEAD提交(即其父提交,父父提交等),是否会找到一个标记为3.x.0的提交? - VonC
1个回答

0
问题的原因可能是不同的git版本。一个主机安装了相当旧的git版本(1.7.x),在升级到2.10.x后,问题消失了。 另一个可能的原因是我们有时会更新标签,将它们指向一个新的提交(我们停止这样做了)。 我注意到,在某个时候,当你创建一个轻量级标签,然后将其更改为注释标签时,已经看到轻量级标签的另一个客户端不会在你执行git fetch --tags时下载更新的、现在已注释的标签,因为它通过名称识别已经看到了该标签,并且不关心标签类型是否已更改,因此git describe不会为该客户端选择该标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接