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
.