如何在名称中使用正斜杠创建标记

问题描述 投票:7回答:1

当我已经拥有类似外观的git标签时,有没有办法在其名称中创建带正斜杠的git标签?

假设我有“1.16.0”标签,我想创建“1.16.0 / 1.0.0”标签:

$ git tag "1.16.0/1.0.0"
error: 'refs/tags/1.16.0' exists; cannot create 'refs/tags/1.16.0/1.0.0'
fatal: refs/tags/1.16.0/1.0.0: cannot lock the ref
git tags git-tag
1个回答
8
投票

这是不可能的。请参阅标记的名称(实际上,任何引用;与分支相同)被视为文件系统对象的名称,在存储库的$GIT_DIR/refs文件夹中创建。此对象存储标记附加到的哈希提交。

随着标签foo,它很容易 - 文件foo是在$GIT_DIR/refs创建的,没有什么特别值得怀疑的。

然而,使用标签foo/bar,它有点复杂:现在创建文件夹foo,只有一个文件 - bar(再次,使用哈希提交)。引用the docs

[引用名称]可以包括斜杠/用于分层(目录)分组

问题是,不可能有两个具有相同名称的对象 - 文件和文件夹。因此,如果您已经有1.16.0标签,您将无法使用1.16.0/anything。一个明显的解决方案是将初始标记转换为类似1.16.0/0.0.1的内容,然后继续执行您的原始意图。或者你可以用-_替换斜线。

© www.soinside.com 2019 - 2024. All rights reserved.