Какие символы недопустимы в имени ветви?

Ответы:

299

Правила именования для 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. Они не могут начинаться с тире -

Благодаря Jakub Narębski , на странице man для git check-ref-formatболее подробной информации.

Маной Говиндан
источник
9
Стоит отметить, что «>» разрешено, но для переключения на эту ветку в bash требуется экранирование с предшествующим «\»
igniteflow
3
Я запутался в правиле № 2 на странице руководства, на которую вы ссылались. Там написано «2. Они должны содержать хотя бы один /». Пожалуйста, объясни? Ни одна из моих веток не имеет /в названии.
Чарви
7
@chharvey: «ветка» без /уже heads/предваряется к нему «автоматически». На самом деле: без /, пока не ясно, ветка ли это, или тег, или что-то еще ...
Роберт Симер
1
@DMTintner: Запятые разрешены.
Роберт Симер
3
здесь есть регулярное выражение для этого /^[\./]|\.\.|@]|[\/\.]$|^@$|[~^:\x00-\x20\x7F\s?* [\\] / g это позволит найти недопустимые символы, чтобы вы могли заменить их на '-' или любой другой символ, который вы хотите
Тони Брикс,