如何创建带有斜杠的标签名称

10

如果我已经有一个名为"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
1个回答

12
无法实现。因为标签名称(实际上也适用于分支等任何引用)被视为文件系统对象的名称,该对象在存储库的$GIT_DIR/refs文件夹中创建。此对象存储标签所附加到的哈希提交。
对于标签foo,很容易 - 在$GIT_DIR/refs中创建文件foo,没有什么特别需要想象的。
然而,对于标签foo/bar,情况要稍微复杂一些:现在会创建一个名为foo的文件夹,其中只有一个文件-bar(同样具有哈希提交)。引用文档的话:

[reference names] can include slash / for hierarchical (directory) grouping

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接