Naming rules for refname:
Git imposes the following rules on how references are named:
They can include slash /
for hierarchical (directory) grouping, but no slash-separated component can begin with a dot .
or end with the sequence .lock
.
They must contain at least one /
. This enforces the presence of a category like heads/
, tags/
etc. but the actual names are not restricted. If the --allow-onelevel
option is used, this rule is waived.
They cannot have two consecutive dots ..
anywhere.
They cannot have ASCII control characters (i.e. bytes whose values are lower than 40
, or 177
DEL
), space, tilde ~
, caret ^
, or colon :
anywhere.
They cannot have question-mark ?
, asterisk *
, or open bracket [
anywhere. See the --refspec-pattern
option below for an exception to this rule.
They cannot begin or end with a slash /
or contain multiple consecutive slashes (see the --normalize
option below for an exception to this rule)
They cannot end with a dot .
They cannot contain a sequence @{
.
They cannot be the single character @
.
They cannot contain a
.
On top of that, additional rule for branch name:
- They cannot start with a dash
-
Thanks to Jakub Nar?bski, the man page for git check-ref-format
has more details.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…