我使用的是在Ubuntu 10.10 AMD64 git的1.7.1,而我试图提取我的仓库头的散列,我编到我的项目一个自动版本信息来使用它.
在过去,这总是通过使用
git describe --tags
Run Code Online (Sandbox Code Playgroud)
然而,git现在正在投掷
fatal: No names found, cannot describe anything.
Run Code Online (Sandbox Code Playgroud)
对我.有没有人知道这意味着什么?
谷歌显示只有少数点击,没有解决方案.
CB *_*ley 59
如果你想要HEAD你不需要的你的id describe,你应该使用rev-parse.
git rev-parse HEAD
Run Code Online (Sandbox Code Playgroud)
如果你想要一个缩写哈希,你可以使用--short.
git rev-parse --short HEAD
Run Code Online (Sandbox Code Playgroud)
如果你想要"描述"回到缩写哈希,如果它找不到任何合适的标签,你可以使用--always.
git describe --always
Run Code Online (Sandbox Code Playgroud)
eat*_*ter 33
听起来您希望git-describe包含自该标记以来最新的标记和提交数量.但是,该fatal: No names found消息表示您的存储库中没有任何标记.您需要在提交历史记录中至少有一个标记git describe才能告诉您最新的标记.
只是猜测,但也许你在其他地方标记了一个提交,但是从来没有将标记推送到上游(也许你将提交推送到上游,稍后标记它,并且没有重新注入?).现在,您的上游的新克隆正在给您这个错误(因为它没有任何标记).如果是这种情况,您可以尝试git push --tags从具有您想要的标记的存储库(在哪里git describe做您期望的).然后git pull在没有标记的存储库上执行.
Dan*_*gen 23
如果您的存储库中没有任何标签,就会发生这种情况。如果存储库确实有标签,那么您就处于浅克隆中(这是 TravisCI 或 GitHub Actions 等 CI 系统中的默认设置)。
要从浅克隆中获取历史记录(包括标签),请运行
git fetch --prune --unshallow
Run Code Online (Sandbox Code Playgroud)
例如,在 GitHub 操作的情况下:
- uses: actions/checkout@v2
- run: git fetch --prune --unshallow
Run Code Online (Sandbox Code Playgroud)
之后,git describe应该再次工作。
Mik*_*itt 21
我在CI构建环境中遇到此问题,其中CI工具正在执行存储库的浅层克隆.这令人沮丧,因为在我的开发环境中,命令
git describe --tags
Run Code Online (Sandbox Code Playgroud)
会给我输出像
2.2.12-7-g8ec9d6c9
Run Code Online (Sandbox Code Playgroud)
而在构建环境中,我会得到"致命的没有找到名字"的错误.如果我尝试使用--always标签
git describe --tags --always
Run Code Online (Sandbox Code Playgroud)
然后我会简单地获取最新提交的哈希值,但不会获得该提交之前的最新标记
8ec9d6c9
Run Code Online (Sandbox Code Playgroud)
git pull在构建环境中执行a 无济于事,因为一旦repo被浅层克隆,未来的pull将不会更新标记.
解决方案是确保构建环境中repo的初始克隆不是浅克隆(即git clone命令未使用--depth,--shallow-since或--shallow-exclude参数).
MAC*_*rha 19
如果您使用 GitHub Actions 和actions/checkout,则应将其设置fetch-depth为0:
# ...
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
Run Code Online (Sandbox Code Playgroud)
我在从事 CI 工作时遇到了类似的问题,问题是 git clone 或 checkout scm 在克隆 repo 时没有获取标签。
不带标签的获取 从https://github获取上游更改.**********
您可以通过选择“高级克隆行为”然后单击获取标签来启用获取标签。
小智 5
这个命令帮助了我:
git fetch -t
它从 git 存储库中获取最新的标签,因此能够描述标签。