Как создать тег с косой чертой в названии
Есть ли способ создать тег 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
затем продолжайте с вашим первоначальным намерением. Или вы можете просто заменить косую черту -
или же _
,