我通过将标签应用于夜间构建来使用它们。然后,我想使用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来更新工作区。为什么会发生这种情况,有没有解决方案?非常感谢
5条答案
按热度按时间kx7yvsdv1#
我刚刚在使用
git version 2.8.3
和命令git describe --abbrev=0
时遇到了这个错误。问题是,虽然标记存在于源代码中,并且我的本地存储库是最新的,但标记没有提交消息。
在我用标记消息重新标记提交后,错误得到了解决:
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?来解决问题。sauutmhj3#
发生这种情况是因为您只获取标记,而不是标记的提交历史。
git describe
使用此历史,这就是它出错的原因。唯一的解决方法是使用
git fetch <remote-name>
获取包含您感兴趣的标记的repo历史。q3qa4bjr4#
当我基于git引用创建一个git标签时,我实际上遇到了这个错误。
似乎git引用不是“在master中”,这会导致一些问题。
因此,解决方法是在master中找到正确的提交引用并重新创建标记。
xmd2e60i5#
对我来说,它工作后,使用
git pull
而不是git fetch
。加强已经提供的解决方案:我的git标签已经有了一个标签消息,
git fetch <remote-name>
在我的情况下也没有帮助。