Which characters are illegal within a branch name?
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.
As an addition, care must be taken if you consider to use the dollar sign $ character.
git branch pew$ign will create pew. In order to create a branch that has $ within it the whole name should be wrapped in quotes: git branch 'pewSign'. Ideally you should avoid to use the symbol whatsoever.