¿Qué caracteres son ilegales dentro del nombre de una sucursal?

Respuestas:

299

Reglas de nomenclatura para refname:

Git impone las siguientes reglas sobre cómo se nombran las referencias:

  1. Pueden incluir barras diagonales /para la agrupación jerárquica (directorio), pero ningún componente separado por barras puede comenzar con un punto .o terminar con la secuencia .lock.

  2. Deben contener al menos uno /. Esto exige la presencia de una categoría como heads/, tags/etc. , pero los nombres reales no están restringidos. Si --allow-onelevelse utiliza la opción, esta regla no se aplica.

  3. No pueden tener dos puntos consecutivos en ..ninguna parte.

  4. No pueden tener caracteres de control ASCII (es decir, bytes cuyos valores son menores que \040, o \177 DEL), espacio, tilde ~, cursor ^o dos puntos en :cualquier lugar.

  5. No pueden tener signos de interrogación ?, asterisco *o corchetes abiertos en [ninguna parte. Consulte la --refspec-patternsiguiente opción para ver una excepción a esta regla.

  6. No pueden comenzar o terminar con una barra oblicua /o contener múltiples barras consecutivas (consulte la --normalizeopción a continuación para ver una excepción a esta regla)

  7. No pueden terminar con un punto ..

  8. No pueden contener una secuencia @{.

  9. No pueden ser el único personaje @.

  10. No pueden contener a \.

Además de eso, regla adicional para el nombre de la sucursal:

  1. No pueden comenzar con un guión -

Gracias a Jakub Narębski , la página del manual para la git check-ref-formattiene más detalles.

Manoj Govindan
fuente
9
Vale la pena mencionar que '>' está permitido, pero para cambiar a esa rama en bash se requiere escapar con un '\' anterior
igniteflow
3
Estoy confundido acerca de la regla # 2 en la página del manual que vinculaste. Dice "2. Deben contener al menos uno /". ¿Por favor explique? Ninguna de mis ramas tiene un /nombre.
chharvey
77
@chharvey: una "rama" sin a se /ha heads/antepuesto a ella "automáticamente". En realidad: sin un /, todavía no está claro si es una rama o una etiqueta o algo más ...
Robert Siemer
1
@DMTintner: se permiten comas.
Robert Siemer
3
Aquí hay una expresión regular para este /^[\./font>|\.\.|@{|[\/\.font>$|^@$|[~^:\x00-\x20\x7F\s?* [\\] / g esto encontrará los caracteres no válidos para que pueda reemplazarlos con un '-' o el carácter que desee
Tony Brix