分支名称中哪些字符是非法的?


Answers:


298

refname的命名规则:

Git对引用的命名方式施加以下规则:

  1. 它们可以包括/用于层次结构(目录)分组的斜杠,但斜杠分隔的组件不能以点开头.或以序列结尾.lock

  2. 它们必须至少包含一个/。这会强制存在诸如等的类别heads/tags/但实际名称不受限制。如果使用该--allow-onelevel选项,则该规则将被放弃。

  3. 它们..在任何地方都不能有两个连续的点。

  4. 它们不能具有ASCII控制字符(即值小于\040或的字节\177 DEL),空格,代字号~,插入符^或冒号:

  5. 他们在任何地方都不能有问号?,星号*或方括号[。请参阅以下--refspec-pattern选项,以了解此规则的例外情况。

  6. 它们不能以斜杠开头或结尾,也不能/包含多个连续的斜杠(有关--normalize此规则的例外,请参阅下面的选项)

  7. 他们不能以点结尾 ..

  8. 它们不能包含序列@{

  9. 它们不能是单个字符@

  10. 它们不能包含\

最重要的是,分支名称的其他规则:

  1. 他们不能以破折号开头 -

感谢的JakubNarębski,该手册页git check-ref-format细节更加丰富。


9
值得一提的是,允许使用“>”,但要以bash切换到该分支,则需要使用前面的“ \”转义
igniteflow

3
我对您链接的手册页中的规则2感到困惑。它说:“ 2。它们必须至少包含一个/。” 请解释?我的所有分支都没有/名字。
chharvey 2014年

7
@chharvey:一个“分支”没有/heads/“自动”前面加上它。实际上:没有/,尚不清楚是分支还是标签或其他东西……
Robert Siemer

1
@DMTintner:允许使用逗号。
罗伯·西默

3
这是此/^[\./]|\.\.|@{|[\/\.]$|^@$|[~^:\x00-\x20\x7F\s?*的正则表达式[\\] / g这将找到无效字符,因此您可以将它们替换为'-'或所需的任何字符
Tony Brix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.