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

fbcarpbf  于 2023-03-28  发布在  Git
关注(0)|答案(5)|浏览(182)

我通过将标签应用于夜间构建来使用它们。然后,我想使用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来更新工作区。为什么会发生这种情况,有没有解决方案?非常感谢

kx7yvsdv

kx7yvsdv1#

我刚刚在使用git version 2.8.3和命令git describe --abbrev=0时遇到了这个错误。
问题是,虽然标记存在于源代码中,并且我的本地存储库是最新的,但标记没有提交消息。
在我用标记消息重新标记提交后,错误得到了解决:

git tag v1.1.1 -m 'some message'
jobtbby3

jobtbby32#

另一种解释可能是仓库是用depth=xyz设置克隆的(Travis默认是这样做的)。在这种情况下,历史可能会在最新的标记之前被切断。
从技术上讲,使用depth=xyz进行克隆会创建一个浅克隆,其中包含.git/shallow中的条目,这些条目描述了在何处切断历史记录。当git describe随后遍历历史记录时,它可能会到达该切断点并停止搜索标签。即使在使用git fetch --tags进行初始浅克隆后手动获取标签,也会发生这种情况。
如果这就是问题所在,您需要unshallow存储库(或者首先创建一个完整的(足够的)克隆)。请参阅How to convert a Git shallow clone to a full clone?来解决问题。

sauutmhj

sauutmhj3#

发生这种情况是因为您只获取标记,而不是标记的提交历史。git describe使用此历史,这就是它出错的原因。
唯一的解决方法是使用git fetch <remote-name>获取包含您感兴趣的标记的repo历史。

q3qa4bjr

q3qa4bjr4#

当我基于git引用创建一个git标签时,我实际上遇到了这个错误。
似乎git引用不是“在master中”,这会导致一些问题。
因此,解决方法是在master中找到正确的提交引用并重新创建标记。

xmd2e60i

xmd2e60i5#

对我来说,它工作后,使用git pull而不是git fetch
加强已经提供的解决方案:我的git标签已经有了一个标签消息,git fetch <remote-name>在我的情况下也没有帮助。

相关问题