Я почти уверен, что где-то в популярном Git-проекте я видел, что у веток был такой шаблон, как "feature / xyz".
Однако, когда я пытаюсь создать ветку с символом косой черты, я получаю сообщение об ошибке:
$ git branch labs/feature
error: unable to resolve reference refs/heads/labs/feature: Not a directory
fatal: Failed to lock ref for update: Not a directory
Та же проблема для (моя первоначальная попытка):
$ git checkout -b labs/feature
Как создать ветку в Git с косой чертой?
HEAD
. Похоже, git думает, что выHEAD
- ссылка на ветку,labs/feature
которая еще не была создана. Я понятия не имею, как это могло произойти, но это означает, что ваша попытка создать ветку с именемfoo/bar
на ее основе не работает. Есть идеи, как выHEAD
открепились?.git/refs/heads
т.е. если вы это сделаете,git checkout -b feature/123
то внутри вашегоprojectRootFolder/.git/refs/heads
каталога вы увидите каталог с именем:feature
где внутри этого каталога вы увидите ветку с именем123
. Позже, если вы создадите другой каталогfeature/124
внутриfeature
каталога, вы увидите ветку с именем124
HEAD
" Nice @CBBaileyОтветы:
Вы уверены, что ветвь
labs
еще не существует (как в этой теме )?источник
foo
пространстве имен ' '), но не удалилиfoo
(которая могла бы служить пространством имен для другой ветви или быть самой ветвью)pack-refs
, поэтому он пытается защитить вас от этого.labs
ветка и попытался создатьlabs/feature
, на которую глыбнул.Возможно иметь иерархические имена ветвей (имена веток с косой чертой). Например, в моем репозитории у меня есть такая ветка (и). Единственное предостережение в том, что в репозитории нельзя использовать как ветку 'foo', так и ветку 'foo / bar'.
Ваша проблема не в создании ветки с косой чертой в имени.
Приведенное выше сообщение об ошибке говорит о ветке 'labs / feature', а не о 'foo / bar' (если только это не ошибка в copy'n'paste, т.е. вы редактировали части сессии). Каков результат
git branch
илиgit rev-parse --symbolic-full-name HEAD
?источник
Иногда эта проблема возникает, если у вас уже есть ветка с базовым именем.
Я попробовал это:
К сожалению, у меня уже была названная ветка
features
, и я получил исключение из вопроса.Удаление ветки
features
решило проблему, вышеприведенная команда сработала.источник
В моем случае я забыл, что там уже была неиспользованная
labs
ветка. Удаление это решило проблему:Объяснение:
Каждое имя может быть только родительской ветвью или обычной ветвью, но не обоими. Вот почему ветви
labs
иlabs/feature
не могут существовать одновременно.Причиной такого поведения является то, что ветви хранятся в файловой системе, и там вы также не можете иметь файл
labs
и каталогlabs
на одном уровне.источник
Я могу ошибаться, но я подумал, что косые черты появляются только в именах веток, когда они связаны, например, с удаленным репо
origin/master
.источник