Сведения об именах ветвей и тегов
В большинстве репозиториев используются простые имена ветвей, например main
или update-icons
. Имена тегов также обычно имеют базовый формат, например номер версии — v1.2.3
. Для структурирования в именах ветвей и тегов также может использоваться разделитель пути (/
), например area/item
или level-1/level-2/level-3
. В Git накладываются минимальные ограничения на использование символов в именах ветвей и тегов. Например, имя не должно начинаться или заканчиваться символом косой черты и не должно содержать последовательность таких символов. Дополнительные сведения см. в разделе git-check-ref-format в документации по Git.
Почему необходимо экранировать специальные символы
При работе с интерфейсом командной строки в именах ветвей или тегов могут появляться специальные символы, которые имеют особое значение для среды оболочки. Для безопасного использования таких символов в команде Git их необходимо заключить в кавычки или экранировать, иначе результат выполнения команды может быть непредсказуемыми.
Например, символ $
используется во многих оболочках для указания ссылки на переменную. В большинстве оболочек такое допустимое имя ветви, как hello-$USER
, будет интерпретироваться не как литеральная строка hello-$USER
, а как эквивалент слова "hello", за которым следует дефис, а затем — текущее значение переменной USER
. Если имя ветви содержит символ $
, необходимо исключить его расширение оболочкой в виде ссылки на переменную. Аналогичным образом, символ точки с запятой (;
) в имени ветви, в большинстве оболочек интерпретируется как разделитель команд, поэтому его необходимо заключить в кавычки или экранировать.
Как экранировать специальные символы в именах ветвей и тегов
В большинстве случаев имена ветвей и тегов со специальными символами можно экранировать, заключив их в одинарные кавычки, например 'hello-$USER'
.
- В оболочке Bash используются одинарные кавычки для сохранения литерального значения символов, заключенных между ними.
- В оболочке Zsh реализовано аналогичное Bash поведение, которое можно настроить с помощью параметра
RC_QUOTES
. - В PowerShell для сохранения литерального значения символов также используются одинарные кавычки.
Основное исключение при работе с этими оболочками связано с именами ветвей или тегов, которые содержат одинарную кавычку. В таких случаях следует обратиться к официальной документации по соответствующей оболочке:
Именование ветвей и тегов
По возможности не используйте в именах ветвей и тегов специальные символы, которые потребуется экранировать. По умолчанию в именах ветвей и тегов безопасно использовать следующие символы:
- Буквы английского алфавита (от
a
доz
и отA
доZ
). - Цифры (от
0
до9
). - Некоторые знаки препинания:
- точка (
.
); - дефис (
-
); - символ подчеркивания (
_
); - косая черта (
/
).
- точка (
Во избежание путаницы имена ветвей должны начинаться с буквы.
Ограничения на имена в GitHub
GitHub ограничивает небольшое количество имен ветвей и тегов от отправки. Эти ограничения:
- Имена, которые выглядят как идентификаторы объектов Git (40 символов, содержащих только 0-9 и A-F), чтобы предотвратить путаницу с фактическими идентификаторами объектов Git.
- Имена, начинающиеся с
refs/
, чтобы предотвратить путаницу с полным именем Git refs. Дополнительные сведения о ссылках см. в разделе "Ссылки на Git" в документации по Git.