Which characters are illegal within a branch name?
Question
Answer
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 likeheads/,tags/etc. but the actual names are not restricted. If the--allow-oneleveloption 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
\040, or\177DEL), space, tilde~, caret^, or colon:anywhere.They cannot have question-mark
?, asterisk*, or open bracket[anywhere. See the--refspec-patternoption below for an exception to this rule.They cannot begin or end with a slash
/or contain multiple consecutive slashes (see the--normalizeoption 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.