Utilisation du caractère barre oblique dans le nom de la twig Git

Je suis sûr que j’ai vu quelque part dans un projet Git populaire que les twigs avaient un motif comme “feature / xyz”.

Cependant, lorsque j’essaie de créer une twig avec le caractère barre oblique, je reçois 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 tentative initiale):

 $ git checkout -b labs/feature 

Comment créer une twig dans Git avec le caractère slash?

Êtes-vous sûr que les labs twig n’existent pas déjà (comme dans ce fil )?

Vous ne pouvez pas avoir à la fois un fichier et un répertoire portant le même nom.

Vous essayez de faire cela essentiellement:

 % cd .git/refs/heads % ls -l total 0 -rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 labs -rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 master % mkdir labs mkdir: cannot create directory 'labs': File exists 

Vous obtenez l’équivalent de l’erreur “impossible de créer un répertoire”.
Lorsque vous avez une twig avec des barres obliques, elle est stockée en tant que hiérarchie de répertoires sous .git/refs/heads .

Il est possible d’avoir des noms de twig hiérarchiques (noms de twig avec une barre oblique). Par exemple, dans mon référentiel, j’ai de telles agences. Une mise en garde est que vous ne pouvez pas avoir les deux twigs “foo” et “foo / bar” dans le repository.

Votre problème n’est pas de créer une twig avec une barre oblique dans le nom.

 $ git twig foo / bar
 erreur: impossible de résoudre les références refs / heads / labs / feature: pas un répertoire
 fatal: Impossible de verrouiller la référence pour la mise à jour: pas un répertoire

Le message d’erreur ci-dessus parle de la twig ‘labs / feature’, pas de ‘foo / bar’ (sauf si c’est une erreur dans copy’n’paste, c’est-à-dire que vous avez édité des parties de session). Quel est le résultat de git branch ou git rev-parse --symbolic-full-name HEAD ?

Parfois, ce problème se produit si vous avez déjà une twig avec le nom de base.

J’ai essayé ceci:

 git checkout -b features/aName origin/features/aName 

Malheureusement, j’avais déjà une twig nommée features et j’ai eu l’exception du demandeur.

La suppression des features la twig a résolu le problème, la commande ci-dessus a fonctionné.

Dans mon cas, j’ai oublié qu’il y avait déjà une twig de labs inutilisés. Sa suppression a résolu le problème:

 git branch -d labs git checkout -b labs/feature 

Explication:

Chaque nom ne peut être qu’une twig parente ou une twig normale, pas les deux. C’est pourquoi les labs et les labs/feature des succursales ne peuvent pas exister simultanément.

La raison de ce comportement est que les twigs sont stockées dans le système de fichiers et qu’il n’ya pas non plus de labs fichiers ni de répertoires au même niveau.

Je peux me tromper, mais je pensais que les barres obliques n’apparaissaient que dans les noms de twig lorsqu’elles étaient liées à un repository à distance, par exemple origin/master .