如何创建名称中带有正斜杠的标签
How to create tag with forward slash in its name
当我已经有了类似的标签时,有什么方法可以创建名称中带有正斜杠的 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_DIR/refs
文件夹中创建。此对象存储标签附加到的哈希提交。
使用标签 foo
,这很容易 - 文件 foo
是在 $GIT_DIR/refs
中创建的,没有什么特别值得怀疑的。
使用标签 foo/bar
,但是,它有点复杂:现在创建了 文件夹 foo
,只有一个文件 - bar
(同样,使用哈希提交)。引用 the docs:
[reference names] can include slash / for hierarchical (directory) grouping
问题是,不可能有两个对象(文件和文件夹)同名。因此,如果您已经拥有 1.16.0
标签,您将无法使用 1.16.0/anything
。一个明显的解决方案是将该初始标记转换为类似 1.16.0/0.0.1
的内容,然后继续您的原始意图。或者您可以将斜杠替换为 -
或 _
.
当我已经有了类似的标签时,有什么方法可以创建名称中带有正斜杠的 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_DIR/refs
文件夹中创建。此对象存储标签附加到的哈希提交。
使用标签 foo
,这很容易 - 文件 foo
是在 $GIT_DIR/refs
中创建的,没有什么特别值得怀疑的。
使用标签 foo/bar
,但是,它有点复杂:现在创建了 文件夹 foo
,只有一个文件 - bar
(同样,使用哈希提交)。引用 the docs:
[reference names] can include slash / for hierarchical (directory) grouping
问题是,不可能有两个对象(文件和文件夹)同名。因此,如果您已经拥有 1.16.0
标签,您将无法使用 1.16.0/anything
。一个明显的解决方案是将该初始标记转换为类似 1.16.0/0.0.1
的内容,然后继续您的原始意图。或者您可以将斜杠替换为 -
或 _
.