Je suis presque sûr d'avoir vu quelque part dans un projet Git populaire les branches avaient un motif comme "feature / xyz".
Cependant, lorsque j'essaie de créer une branche avec le caractère barre oblique, j'obtiens une erreur:
$ 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
Même problème pour (ma première tentative):
$ git checkout -b labs/feature
Comment créer une branche dans Git avec le caractère barre oblique?
HEAD
. Il semble que git pense que vous êtesHEAD
un lien vers la branchelabs/feature
qui n'a pas été créée. Je ne sais pas comment cela a pu se produire, mais cela signifie que votre tentative de créer une branche appelée enfoo/bar
fonction de cela, ne fonctionne pas. Une idée de comment tuHEAD
es décollé?.git/refs/heads
ie si vous le faitesgit checkout -b feature/123
alors à l'intérieur de votreprojectRootFolder/.git/refs/heads
répertoire, vous verrez un répertoire nommé:feature
où à l'intérieur de ce répertoire, vous verrez une branche nommée123
. Plus tard, si vous en créez un autrefeature/124
à l'intérieur dufeature
répertoire, vous verrez une branche nommée124
HEAD
" Nice one @CBBaileyRéponses:
Êtes-vous sûr que la branche
labs
n'existe pas déjà (comme dans ce fil )?la source
foo
espace de noms ' '), mais pasfoo
(qui pourrait servir d'espace de noms pour une autre branche ou être une branche elle-même)pack-refs
, donc il se met en quatre pour vous protéger de cela.labs
branche et a essayé de créerlabs/feature
, ce qui a reculé.Il est possible d'avoir des noms de branche hiérarchiques (noms de branche avec barre oblique). Par exemple, dans mon référentiel, j'ai de telles branches. Une mise en garde est que vous ne pouvez pas avoir à la fois la branche 'foo' et la branche 'foo / bar' dans le référentiel.
Votre problème n'est pas de créer une branche avec une barre oblique dans le nom.
Le message d'erreur ci-dessus parle de la branche 'labs / feature', pas 'foo / bar' (sauf si c'est une erreur de copier-coller, c'est-à-dire que vous avez édité des parties de session). Quel est le résultat de
git branch
ougit rev-parse --symbolic-full-name HEAD
?la source
Parfois, ce problème se produit si vous avez déjà une branche avec le nom de base.
J'ai essayé ceci:
Malheureusement, j'avais déjà une branche nommée
features
, et j'ai eu l'exception du poseur de questions.La suppression de la branche a
features
résolu le problème, la commande ci-dessus a fonctionné.la source
Dans mon cas, j'ai oublié qu'il y avait déjà une
labs
branche inutilisée . La supprimer a résolu le problème:Explication:
Chaque nom ne peut être qu'une branche parente ou une branche normale, pas les deux. C'est pourquoi les branches
labs
etlabs/feature
ne peuvent pas exister à la fois en même temps.La raison de ce comportement est que les branches sont stockées dans le système de fichiers et que vous ne pouvez pas non plus avoir un fichier
labs
et un répertoirelabs
au même niveau.la source
Je peux me tromper, mais je pensais que les barres obliques n'apparaissaient dans les noms de branche que lorsqu'elles concernaient un dépôt à distance, par exemple
origin/master
.la source