【问题标题】:git fatal:No tags can describe <sha1 number>git fatal:没有标签可以描述 <sha1 number>
【发布时间】:2011-09-20 16:04:23
【问题描述】:

我通过将标签应用于夜间构建来使用它们。然后稍后,我想使用describe --tags --match &lt;latest tag&gt; 的输出来告诉我我的图像离每晚构建多远。这是用于 QA 测试的。

我刚刚在比当前标签更旧的克隆中遇到了错误。我运行了 git fetch --tags,所以我在 git tag 输出中看到了这个标签,但是当我运行 git describe --tags --match &lt;tagname&gt; 时,我得到了 fatal: No tags can describe &lt;head sha1 version number&gt;。此时我无法执行 git pull 来更新工作区。为什么会发生这种情况,是否有解决方法?非常感谢

【问题讨论】:

    标签: git tags commit


    【解决方案1】:

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

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

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

    git tag v1.1.1 -m 'some message'
    

    【讨论】:

    • 您可以启用的git describe command has a --tags option:“使用在 refs/tags 命名空间中找到的任何标签,而不是仅使用带注释的标签。此选项可以匹配轻量级(非注释)标签。”这样您就无需更改标签。
    【解决方案2】:

    另一种解释可能是使用depth=xyz 设置(Travis does by default)克隆了存储库。在这种情况下,历史可能会在最新标签之前被切断。

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

    如果这是问题所在,您需要unshallow 存储库(或首先创建一个完整(足够)的克隆)。见How to convert a Git shallow clone to a full clone?解决问题。

    【讨论】:

    【解决方案3】:

    这是因为您只获取标签,而不是标签的提交历史。 git describe 使用此历史记录,这就是它出现错误的原因。

    唯一的解决方法是使用 git fetch &lt;remote-name&gt; 获取包含您感兴趣的标签的 repo 历史记录。

    【讨论】:

    • $ git fetch remote:计数对象:10,完成。远程:压缩对象:100% (6/6),完成。远程:总共 6 个(增量 4),重复使用 0 个(增量 0) 拆包对象:100% (6/6),完成。从纯种马:flt/root facbb9f..045ec3a main -> origin/main facbb9f..045ec3a main_int -> origin/main_int $ git describe --tags --match MAIN_INT-74 fatal: No tags can describe '2eb966ad1c2a9b78be2b09e8e329f54a695a0f86'。试试 --always,或者创建一些标签。
    • 是的,我的意思是git fetch remote。你能看到 gitk 中的标签或任何其他查看方式吗?您确定该标签是您当前 HEAD 的父标签吗?
    • 我刚刚运行了 git pull 并更新了工作空间,但 describe 命令仍然失败。这真的是预期的吗?
    • 也许您处于分离的 HEAD 中?如果在没有 --match 的情况下运行 describe 会发生什么?
    • 是的,我运行 git tag 时可以看到标签。
    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      相关资源
      最近更新 更多