git fatal:没有标签可以描述<sha1 number>

问题描述 投票:0回答:6

我通过将标签应用于夜间构建来使用标签。然后,我想使用

describe --tags --match <latest tag>
的输出来告诉我图像距离夜间构建有多远。这是用于 QA 测试。

我刚刚在比当前标签更旧的克隆中遇到错误。我运行了 git fetch --tags,所以我在 git tag 输出中看到了标签,但是当我运行

git describe --tags --match <tagname>
时,我得到了
fatal: No tags can describe <head sha1 version number>
。此时我无法执行 git pull 来更新工作区。为什么会发生这种情况?有解决方法吗?非常感谢

git tags commit
6个回答
26
投票

我刚刚使用

git version 2.8.3
和命令
git describe --abbrev=0
遇到了这个错误。

问题是,虽然标签存在于源中并且我的本地存储库是最新的,但该标签没有提交消息。

我用标签消息重新标记提交后,错误得到解决:

git tag v1.1.1 -m 'some message'

22
投票

另一种解释可能是存储库是使用

depth=xyz
设置克隆的(Travis 默认情况下)。在这种情况下,历史记录可能会在最新标签之前被切断。

从技术上讲,使用

depth=xyz
进行克隆会创建一个浅克隆,其中
.git/shallow
中的条目描述了在何处切断历史记录。当
git describe
遍历历史记录时,它可能会到达该分界点并停止搜索标签。如果您在使用
git fetch --tags
进行初始浅克隆后手动获取标签,甚至会发生这种情况。

如果这是问题所在,您需要

unshallow
存储库(或首先创建一个完整(足够)的克隆)。请参阅如何将 Git 浅克隆转换为完整克隆?来解决问题。


13
投票

发生这种情况是因为您只获取标签,而不是标签的提交历史记录。

git describe
使用此历史记录,这就是它出错的原因。

唯一的解决方法是使用

git fetch <remote-name>
获取包含您感兴趣的标签的存储库历史记录。


1
投票

当我基于 git 引用创建 git 标签时,我实际上遇到了这个错误。

似乎 git 引用不是“在 master 中”,这会导致一些问题。

因此解决方法是在 master 中找到正确的提交引用并重新创建标签。


0
投票

对我来说,使用

git pull
而不是
git fetch
后它就起作用了。

增强已提供的解决方案:我的 git 标签已经有标签消息,并且

git fetch <remote-name>
对我的情况也没有帮助。


0
投票

这可能有两个原因。

  1. 使用
    fetch-depth: 0
    时缺少
    actions/checkout
    ,因为它需要上一个标签提交的历史记录,如果您进行浅层提取,则可能会丢失。
  2. 您正在非主分支上运行它,该分支自创建最后一个标签以来没有发生任何更改。执行
    git pull
    并将这些更改推送到遥控器,看看它是否有效。
© www.soinside.com 2019 - 2024. All rights reserved.