【问题标题】:git describe fails with "fatal: No names found, cannot describe anything."git describe 失败并显示“致命:找不到名称,无法描述任何内容。”
【发布时间】:2011-02-06 22:07:10
【问题描述】:

我在 Ubuntu 10.10 amd64 上使用 git 1.7.1,我正在尝试提取我的存储库 HEAD 的哈希值,以便在我编译到我的项目中的自动版本信息中使用它。

过去,这总是通过使用

git describe --tags

然而,git 现在正在抛出

fatal: No names found, cannot describe anything.

在我身上。有人知道这是什么意思吗?

Google 只显示了很少的点击,没有解决方案。

【问题讨论】:

  • 你真的只想要哈希,还是 git describe 放在一起的信息对你有用?最近的标签和中间提交的数量比 SHA1 更易于阅读。 @nes:您可能想取消删除您的答案,因为它可能正是 OP 需要的 - 很难说。
  • 个人提醒:使用git ls-remote --tags 等检查远程实际上有标签。在我的情况下,repo 最近已迁移到新服务器,并且标签尚未转移!

标签: git


【解决方案1】:

如果你想要HEAD 的 id,那么你不需要describe,你应该使用rev-parse

git rev-parse HEAD

如果你想要一个缩写的哈希,你可以使用--short

git rev-parse --short HEAD

如果您希望“描述”在找不到任何合适的标签时退回到缩写哈希,您可以使用--always

git describe --always

【讨论】:

  • 是的,它返回哈希值,但我真正想要的是通常由 git-describe 返回的缩写哈希值,大约有 8 个字符
  • @Philipp: git describe 通常会返回一个基于标签对象的字符串,该字符串由标签名称、提交次数和基于哈希的后缀组成。它通常不会返回一个缩写的哈希,所以我不太确定你的要求是什么。
【解决方案2】:

我在 CI 构建环境中遇到了这个问题,其中 CI 工具正在执行存储库的浅层克隆。这很令人沮丧,因为在我的开发环境中,命令

git describe --tags

会给我这样的输出

2.2.12-7-g8ec9d6c9

而在构建环境中,我会收到“致命的未找到名称”错误。如果我尝试使用 --always 标签

git describe --tags --always

那么我将简单地获取最新提交的哈希,而不是该提交之前的最新标签

8ec9d6c9

在构建环境中执行git pull 无济于事,因为一旦 repo 被浅层克隆,未来的 pull 将不会更新标签。

解决方案是确保构建环境中 repo 的初始克隆不是浅克隆(即git clone 命令未与--depth--shallow-since--shallow-exclude 参数一起使用)。

【讨论】:

  • 我遇到了完全相同的问题,感谢您的洞察!
  • 添加 git fetch --depth=500 对我有用 Travis-CI。
  • 是的 - 将此添加到 .travis.yml 为我修复了它:git: depth: false
  • 你也可以在浅克隆中简单地做git fetch --tags,来获取丢失的标签
  • 对于 github 操作,将 fetch-depth: 0 添加到结帐操作将获取所有标签和分支。
【解决方案3】:

听起来您希望git-describe 包含最近的标签和自该标签以来的提交次数。但是,fatal: No names found 消息意味着您的存储库中没有任何标签。您需要在提交历史记录中至少有一个标签,以便git describe 告诉您最新的标签。

只是猜测,但也许您在其他地方标记了提交,但从未将标记推送到上游(也许您将提交推送到上游,稍后再标记,并且没有重新推送?)。现在你的上游的一个新克隆给你这个错误(因为它没有任何标签)。如果是这种情况,您可以从具有您想要的标签的存储库中尝试git push --tags(其中git describe 正在执行您期望的操作)。然后在没有标签的仓库上做git pull

【讨论】:

    【解决方案4】:

    如果您的存储库中没有任何标签,则会发生这种情况。如果存储库确实有标签,那么你就处于浅层克隆中(这是 TravisCI 或 GitHub Actions 等 CI 系统中的默认设置)。

    要从浅克隆中获取历史记录(包括标签),请运行

    git fetch --prune --unshallow
    

    例如,对于 GitHub 操作:

    - uses: actions/checkout@v2
    - run: git fetch --prune --unshallow
    

    之后,git describe 应该会再次工作。

    【讨论】:

    • 对于 GitHub Actions,我需要 --tags - 所以 git fetch --prune --unshallow --tags。见this issue
    • 虽然这会起作用并解决 Github Workflows 上浅存储库的问题,但 --unshallowing 不是要真正获取存储库的整个历史记录吗?具有大量历史记录的大型 repo 会通过给 CI 管道添加瓶颈而导致问题。
    • 是的,这将获取整个历史记录。由于标签是指向修订版的指针,因此该修订版必须存在才能使标签正常运行。
    【解决方案5】:

    我在从事 CI 工作时遇到了类似的问题,问题是 git clone 或使用的 checkout scm 在克隆 repo 时没有获取标签。

    无标签抓取 从https://github.**********

    获取上游更改

    您可以通过选择“高级克隆行为”然后单击获取标签来启用获取标签..

    【讨论】:

      【解决方案6】:

      这个命令帮助了我: git fetch -t

      它从 git 存储库中获取最新的标签,因此可以描述标签。

      【讨论】:

      • 请编辑更多信息。纯代码和“试试这个”的答案是discouraged,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。
      • 虽然很简洁,但这是唯一提到fetch的答案。
      • OP 的问题是他的本地存储库没有任何标签。如果远程有,但本地没有,您可以使用 git fetch -t 或 git fetch --tags 获取标签
      • 这个命令也确实解决了我的问题,没有其他响应。
      • 它也帮助了我!
      【解决方案7】:

      如果您是因为 Travis CI 中的此错误消息而来到这里,您可以使用以下设置来避免浅克隆:

      git:
        depth: false
      

      我测试了git fetch --tags,但没有成功。

      【讨论】:

        【解决方案8】:

        克隆分叉分支后会出现此问题,并在从上游变基后消失。

        变基之前:

        #  git describe --tags
        fatal: No names found, cannot describe anything.
        

        变基后:

        # git describe --tags
        v0.1.xxxx
        

        变基的命令:

        git remote add upstream xxxxx
        git checkout main
        git remote prune origin
        git fetch -p upstream 
        git rebase upstream/main
        

        【讨论】:

          【解决方案9】:

          如果您使用 GitHub Actions 和 actions/checkout,则应将 fetch-depth 设置为 0

          # ...
              steps:
                - uses: actions/checkout@v3
                  with:
                    fetch-depth: 0
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-10-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-14
            • 1970-01-01
            • 1970-01-01
            • 2021-09-11
            相关资源
            最近更新 更多