Я отримав повідомлення про помилку під час створення тегу, що містить [символ:
fatal: '[' не є дійсним ім'ям тегу.
Запитання: чи існують правила для тегів у git?
Відповіді:
Ви можете перевірити, чи справжнє ім'я за допомогою
git check-ref-format
Ця сторінка містить обмеження щодо дійсного імені. Цитата зі сторінки (можливо, застаріла в майбутньому):
Вони можуть містити скісну риску
/для ієрархічного (каталогового) групування, але жоден розділений косою рисою компонент не може починатися з крапки.або закінчуватися послідовністю.lock.Вони повинні містити принаймні один
/. Це підсилює присутність категорії , якheads/, іtags/т.д. , але фактичні імена не обмежені. Якщо використовується--allow-onelevelопція, це правило скасовується.Вони не можуть мати
..ніде двох послідовних крапок .Вони не можуть мати контрольних символів ASCII (тобто байтів, значення яких нижчі за \ 040 або \ 177
DEL), пробілу, тильди~, символу введення^або двокрапки:.Вони не можуть ніде мати знак запитання
?, зірочку*або відкриту дужку[. Див.--refspec-patternВаріант нижче для винятку з цього правила.Вони не можуть починатися чи закінчуватися косою рисою
/або містити кілька послідовних скісних рисок (--normalizeвиняток із цього правила див. Нижче)Вони не можуть закінчуватися крапкою
..Вони не можуть містити послідовність
@{.Вони не можуть бути єдиним персонажем
@.Вони не можуть містити a
\.
Як бачите, у вашому випадку ви порушили правило (5).
Ви можете використовувати --normalizeпрапор для нормалізації тегів щодо косих рисок (видалення провідних скісних рисок, а також послідовних):
git check-ref-format --normalize "tags/weird//tag"
У tags/вигляді частини , які ви перевірка достовірність tag.
Після обговорення з @NikosAlexandrisris, ви можете написати наступний лайнер, щоб перевірити тег <some-tag>із текстовими відгуками:
git check-ref-format "tags/<some-tag>" && echo "Valid tag" || echo "Invalid tag"
remote/branch, або HEAD^1(щоб отримати один, але останній коміт голови) тощо. Зрештою, тег - це просто "спеціальне ім'я" для коміту. Отже, щоб зробити посилання однозначним між тегом, віддаленою гілкою, відносним шляхом тощо, імена обмежені. Наприклад, у Windows ви не можете називати файл .., оскільки тоді шлях ../fooматиме серйозні проблеми. Unix зазвичай вирішує це за допомогою екранування, але тут "простір тегів", "простір гілок", "відносний простір комітів" "об'єднано".
v1.4, дійсний тег, прийнятий версією 2.21.0. Див. Основи Git - позначення .
refs/tags/v1.4, зверніть увагу, що git додає його до refs/tags/.