Estoy bastante seguro de que vi en algún lugar de un proyecto popular de Git que las sucursales tenían un patrón como "feature / xyz".
Sin embargo, cuando bash crear una twig con el carácter barra oblicua, aparece un error:
$ 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
Mismo problema para (mi bash inicial):
$ git checkout -b labs/feature
¿Cómo se crea una twig en Git con el personaje de barra?
¿Estás seguro de que los Branch labs
todavía no existen (como en este hilo )?
No puede tener un file y un directory con el mismo nombre.
Estás tratando de hacer que Git haga básicamente esto:
% 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
Obtiene el equivalente al error "no se puede crear el directory".
Cuando tiene una twig con barras, se almacena como una jerarquía de directorys en.git/refs/heads
.
Es posible tener nombres de twigs jerárquicas (nombres de twigs con barra inclinada). Por ejemplo, en mi repository tengo tales twigs. Una advertencia es que no se puede tener tanto la twig 'foo' como la twig 'foo / bar' en el repository.
Tu problema no está en crear una twig con una barra en el nombre.
$ git branch foo / bar error: no se pueden resolver references refs / heads / labs / feature: No es un directory fatal: no se pudo bloquear la reference para la actualización: no es un directory
El post de error anterior habla de la twig 'labs / feature', no de 'foo / bar' (a less que sea un error en copy'n'paste, es decir, haya editado partes de la session). ¿Cuál es el resultado de git branch
o git rev-parse --symbolic-full-name HEAD
?
Algunas veces ese problema ocurre si ya tiene una twig con el nombre base.
Intenté esto:
git checkout -b features/aName origin/features/aName
Desafortunadamente, ya tenía una twig llamada features
, y obtuve la exception de la pregunta asker.
La eliminación de las features
la twig resolvió el problema, el command anterior funcionó.
En mi caso, olvidé que ya había una twig de labs
no utilizada. Eliminarlo resolvió el problema:
git branch -d labs git checkout -b labs/feature
Explicación:
Cada nombre solo puede ser una twig principal o una twig normal, no ambas. Es por eso que los labs
twigs y labs/feature
no pueden existir al mismo time.
El motivo de este comportamiento es que las twigs se almacenan en el sistema de files y allí tampoco puede tener un labs
files y un labs
directorys en el mismo nivel.
Podría estar equivocado, pero pensé que las barras solo aparecían en los nombres de las twigs cuando se relacionaban con un repository remoto, por ejemplo, origin/master
.