Как создать тег с косой чертой в названии

Есть ли способ создать тег git с косой чертой в названии, если у меня уже есть похожий?

Предположим, у меня есть тег "1.16.0", и я хочу создать тег "1.16.0/1.0.0":

$ git tag "1.16.0/1.0.0"
error: 'refs/tags/1.16.0' exists; cannot create 'refs/tags/1.16.0/1.0.0'
fatal: refs/tags/1.16.0/1.0.0: cannot lock the ref

1 ответ

Решение

Это невозможно. Видите, имя тега (фактически, любая ссылка; то же самое относится и к ветвям) обрабатывается как имя объекта файловой системы, созданного в $GIT_DIR/refs папка вашего хранилища. Этот объект хранит хеш-коммит, к которому прикреплен тег.

С тегом fooЛегко - файл foo создан в $GIT_DIR/refsНичего особенного, чтобы удивляться.

С тегом foo/barОднако, это немного сложнее: теперь папка foo создается, имея только один файл - bar (опять же с хеш-коммитом). Цитирование документов:

[ссылочные имена] могут включать косую черту / для иерархической (директории) группировки

Проблема в том, что невозможно иметь два объекта - файл и папку - с одинаковым именем. Так что если у вас уже есть 1.16.0 тег, вы не сможете работать с 1.16.0/anything, Одним из очевидных решений является преобразование этого исходного тега во что-то вроде 1.16.0/0.0.1затем продолжайте с вашим первоначальным намерением. Или вы можете просто заменить косую черту - или же _,

Другие вопросы по тегам