У меня есть сообщение об ошибке при создании тега, содержащего символ [
:
fatal: '[' не является допустимым именем тега.
Вопрос: существуют ли правила для тегов в git?
У меня есть сообщение об ошибке при создании тега, содержащего символ [
:
fatal: '[' не является допустимым именем тега.
Вопрос: существуют ли правила для тегов в git?
Вы можете проверить правильность имени с помощью
git check-ref-format
Эта страница содержит ограничения на допустимое имя. Цитируется со страницы (возможно, устаревшей в будущем):
Они могут включать слэш
/
для иерархической (каталожной) группировки, но никакой компонент, разделенный слэш, не может начинаться с точки.
или заканчиваться последовательностью.lock
.Они должны содержать хотя бы один
/
. Это обеспечивает наличие такой категории, какheads/
,tags/
и т.д., Но фактические имена не ограничены. Если используется опция--allow-onelevel
, это правило отменяется.Они не могут иметь две последовательные точки
..
где угодно.Они не могут иметь управляющие символы ASCII (т.е. байты, значения которых ниже \040 или\177
DEL
), пробел, тильда~
, каретка^
или двоеточие:
в любом месте.У них не может быть вопросительный знак
?
, звездочка*
или открыть скобку[
где угодно. См. Параметр--refspec-pattern
ниже для исключения из этого правила.Они не могут начинаться или заканчиваться косой чертой
/
или содержать несколько последовательных косых черт (см. параметр--normalize
ниже для исключения из этого правила)Они не могут заканчиваться точкой
.
.Они не могут содержать последовательность
@{
.Они не могут быть единственным символом
@
.Они не могут содержать
\
.
Как вы можете видеть, в вашем случае вы нарушили правило (5).
Вы можете использовать флаг --normalize
для нормализации тегов относительно косой черты (удаление ведущих косых черт, а также последовательных):
git check-ref-format --normalize "tags/weird//tag"
Части tags/
, которые вы проверяете tag
.
После некоторого обсуждения с @NikosAlexandris вы можете написать следующий один вкладыш, чтобы проверить тег <some-tag>
с текстовой обратной связью:
git check-ref-format "tags/<some-tag>" && echo "Valid tag" || echo "Invalid tag!"