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

时间:2015-09-29 17:05:54

标签: git tags git-tag

当我已经拥有类似外观的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

1 个答案:

答案 0 :(得分: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之类的内容,然后继续执行原始意图。或者您可以使用-_替换斜杠。