当我已经拥有类似外观的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
Run Code Online (Sandbox Code Playgroud)
这是不可能的.请参阅标记的名称(实际上,任何引用;与分支相同)被视为在$GIT_DIR/refs存储库的文件夹中创建的文件系统对象的名称.此对象存储标记附加到的哈希提交.
使用标签foo,它很容易 - foo创建文件$GIT_DIR/refs,没有什么特别值得怀疑的.
foo/bar但是,对于标记,它有点复杂:现在创建文件夹 foo,只有一个文件 - bar(同样,使用散列提交).引用文档:
[引用名称]可以包括斜杠/用于分层(目录)分组
问题是,不可能有两个具有相同名称的对象 - 文件和文件夹.因此,如果您已经有1.16.0标签,那么您将无法使用1.16.0/anything.一个明显的解决方案是将初始标记转换为类似的内容1.16.0/0.0.1,然后继续执行原始意图.或者你可以用-或替换斜杠_.