创建包含[
字符的标记时出现错误消息:
致命:'['不是有效的标签名称。
问题:git中的标签有任何规则吗?
Answers:
您可以使用以下命令检查名称是否有效
git check-ref-format
此页面包含对有效名称的约束。从页面引用(将来可能已过时):
它们可以包括
/
用于层次结构(目录)分组的斜杠,但是斜杠分隔的组件不能以点开头.
或以序列结尾.lock
。它们必须至少包含一个
/
。这会强制出现诸如等等的类别heads/
,tags/
但实际名称不受限制。如果使用该--allow-onelevel
选项,则该规则将被放弃。它们
..
在任何地方都不能有两个连续的点。它们不能在任何地方具有ASCII控制字符(即,其值小于\ 040或\ 177的字节
DEL
),空格,代字号~
,插入符^
或冒号:
。他们在任何地方都不能有问号
?
,星号*
或方括号[
。请参阅以下--refspec-pattern
选项,了解此规则的例外情况。它们不能以斜杠开头或结尾,也不能
/
包含多个连续的斜杠(有关--normalize
此规则的例外,请参阅下面的选项)它们不能以点结尾
.
。它们不能包含序列
@{
。它们不能是单个字符
@
。它们不能包含
\
。
如您所见,您违反了规则(5)。
您可以使用该--normalize
标志针对斜杠标准化标签(删除前导斜杠和连续斜杠):
git check-ref-format --normalize "tags/weird//tag"
tags/
您要验证的零件种类tag
。
与@NikosAlexandris进行讨论后,您可以编写以下一个衬纸来检查<some-tag>
带有文本反馈的标签:
git check-ref-format "tags/<some-tag>" && echo "Valid tag" || echo "Invalid tag"
remote/branch
,或HEAD^1
(获取一个,但最后提交的头部),等等。毕竟,标记只是提交的“特殊名称”。因此,为了使引用在标签,远程分支,相对路径等之间毫无疑问,对名称进行了限制。例如,在Windows上,您可以不命名文件..
,因为这样路径../foo
会出现一些严重的问题。Unix通常通过转义来解决此问题,但是这里的“标签空间”,“分支空间”,“相对提交空间”是“合并的”。
refs/tags/v1.4
,请注意git前面加上了refs/tags/
。