У меня есть сообщение об ошибке при создании тега, содержащего символ [:
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!"