Skip to main content

Эта версия GitHub Enterprise Server будет прекращена 2026-03-17. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Обработка специальных символов в именах ветвей и тегов

Git предоставляет множество разрешений для использования символов в именах ветвей и тегов. При использовании Git из оболочки командной строки может потребоваться исключить или заключить в кавычки специальные символы.

Сведения об именах ветвей и тегов

В большинстве репозиториев используются простые имена ветвей, например или . Имена тегов также обычно имеют базовый формат, например номер версии — . Для структурирования в именах ветвей и тегов также может использоваться разделитель пути (), например или . В Git накладываются минимальные ограничения на использование символов в именах ветвей и тегов. Например, имя не должно начинаться или заканчиваться символом косой черты и не должно содержать последовательность таких символов. Дополнительные сведения см . в разделе git-check-ref-format в документации по Git.

Почему необходимо экранировать специальные символы

При работе с интерфейсом командной строки в именах ветвей или тегов могут появляться специальные символы, которые имеют особое значение для среды оболочки. Для безопасного использования таких символов в команде Git их необходимо заключить в кавычки или экранировать, иначе результат выполнения команды может быть непредсказуемыми.

Например, символ используется во многих оболочках для указания ссылки на переменную. В большинстве оболочек такое допустимое имя ветви, как , будет интерпретироваться не как литеральная строка , а как эквивалент слова "hello", за которым следует дефис, а затем — текущее значение переменной . Если имя ветви содержит символ , необходимо исключить его расширение оболочкой в виде ссылки на переменную. Аналогичным образом, символ точки с запятой () в имени ветви, в большинстве оболочек интерпретируется как разделитель команд, поэтому его необходимо заключить в кавычки или экранировать.

Как экранировать специальные символы в именах ветвей и тегов

В большинстве случаев имена ветвей и тегов со специальными символами можно экранировать, заключив их в одинарные кавычки, например .

  • В оболочке Bash используются одинарные кавычки для сохранения литерального значения символов, заключенных между ними.
  • В оболочке Zsh реализовано аналогичное Bash поведение, которое можно настроить с помощью параметра .
  • В PowerShell для сохранения литерального значения символов также используются одинарные кавычки.

Основное исключение при работе с этими оболочками связано с именами ветвей или тегов, которые содержат одинарную кавычку. В таких случаях следует обратиться к официальной документации по соответствующей оболочке:

  • Документация по Bash
  • Документация по Zsh
  • Документация по Fish
  • Документация по PowerShell

Именование ветвей и тегов

По возможности не используйте в именах ветвей и тегов специальные символы, которые потребуется экранировать. По умолчанию в именах ветвей и тегов безопасно использовать следующие символы:

  • Буквы английского алфавита (от  до  и от  до ).
  • Цифры (от  до ).
  • Некоторые знаки препинания:
  • точка ();
  • дефис ();
  • символ подчеркивания ();
  • косая черта ().

Во избежание путаницы имена ветвей должны начинаться с буквы.

Ограничения на имена в GitHub

GitHub ограничивает небольшое количество имен ветвей и тегов от отправки. Эти ограничения:

  • Имена, которые выглядят как идентификаторы объектов Git (40 символов, содержащих только 0-9 и A-F), чтобы предотвратить путаницу с фактическими идентификаторами объектов Git.
  • Имена, начинающиеся с , чтобы предотвратить путаницу с полным именем Git refs. Дополнительные сведения о ссылках см. в документации по Git.