我在Ubuntu 10.10 amd64上使用git 1.7.1,我试图提取我的仓库HEAD的哈希以便在我编译到我的项目中的自动版本信息中使用它。git描述失败与“致命:没有发现名称,无法描述任何东西。”
在过去,这一直使用
git describe --tags
不过工作,Git是现在抛出
fatal: No names found, cannot describe anything.
我。有人知道这意味着什么吗?
谷歌只显示几个点击,没有解决方案。
我在Ubuntu 10.10 amd64上使用git 1.7.1,我试图提取我的仓库HEAD的哈希以便在我编译到我的项目中的自动版本信息中使用它。git描述失败与“致命:没有发现名称,无法描述任何东西。”
在过去,这一直使用
git describe --tags
不过工作,Git是现在抛出
fatal: No names found, cannot describe anything.
我。有人知道这意味着什么吗?
谷歌只显示几个点击,没有解决方案。
如果您想要id为HEAD
那么您不需要describe
,那么您应该只使用rev-parse
。
git rev-parse HEAD
如果你想要一个缩写哈希,你可以使用--short
。
git rev-parse --short HEAD
如果你想要一个“描述”回落到一个简短的哈希如果不能找到合适的标签,你可以使用--always
。
git describe --always
这听起来像你希望git-describe
包括因为该标签最近的标记和提交的数量。但是,fatal: No names found
消息意味着您的在您的存储库中没有任何标签。您需要在提交历史记录中至少有一个标签,以便git describe
告诉您最新的标签。
只是猜测,但也许你在别处标记了一个提交,但从来没有推动标签上游(也许你推上提交,后来标记,并没有重新排列?)。现在你的上游新克隆给你这个错误(因为它没有任何标签)。如果是这种情况,您可以从包含所需标记的存储库中尝试git push --tags
(其中git describe
正在按照您的预期行事)。然后在没有标签的存储库上执行git pull
。
此命令帮助我:混帐取-t
我已经在CI工具正在执行库的浅克隆一个CI构建环境有这个问题。这是令人沮丧的,因为在我的开发环境,命令
git describe --tags
会给我像输出
2.2.12-7-g8ec9d6c9
而构建环境中我会得到错误的“发现致命的没有名字”。如果我尝试使用--always标签
git describe --tags --always
话,我会简单地得到最新的散列提交,但不是最近的标签之前提交
8ec9d6c9
执行在一个git pull
构建环境将无济于事,因为一旦repo被克隆得浅,未来的pulls将不会更新标签。
的解决方案是确保在构建环境回购的初始克隆不是浅克隆(即git clone
命令不与--depth
,--shallow-since
或--shallow-exclude
参数使用)。
“我试图提取我的仓库头”不解析。 – nes1983 2011-02-06 22:16:30
@nes:OP可能意味着哈希。 – Cascabel 2011-02-06 22:17:28
你实际上只想要散列,还是说git描述的信息对你有用?最近的标签和中间提交的数量比SHA1更具人类可读性。 @nes:你可能想要取消删除你的答案,因为它可能正是OP所需要的 - 很难说。 – Cascabel 2011-02-06 22:27:56