Quels caractères sont illégaux dans un nom de branche?

Réponses:

299

Règles de dénomination pour refname:

Git impose les règles suivantes sur la façon dont les références sont nommées:

  1. Ils peuvent inclure une barre oblique /pour le regroupement hiérarchique (répertoire), mais aucun composant séparé par une barre oblique ne peut commencer par un point .ou se terminer par la séquence .lock.

  2. Ils doivent en contenir au moins un /. Cela renforce la présence d'une catégorie comme heads/, tags/etc., mais les noms réels ne sont pas limités. Si l' --allow-oneleveloption est utilisée, cette règle est supprimée.

  3. Ils ne peuvent avoir deux points consécutifs ..nulle part.

  4. Ils ne peuvent pas avoir de caractères de contrôle ASCII (c'est-à-dire des octets dont les valeurs sont inférieures à \040, ou \177 DEL), espace, tilde ~, caret ^ou deux points :n'importe où.

  5. Ils ne peuvent avoir aucun point d'interrogation ?, astérisque *ou crochet ouvert [. Voir l' --refspec-patternoption ci-dessous pour une exception à cette règle.

  6. Ils ne peuvent pas commencer ou se terminer par une barre oblique /ou contenir plusieurs barres obliques consécutives (voir l' --normalizeoption ci-dessous pour une exception à cette règle)

  7. Ils ne peuvent pas se terminer par un point ..

  8. Ils ne peuvent pas contenir de séquence @{.

  9. Ils ne peuvent pas être le seul caractère @.

  10. Ils ne peuvent pas contenir de \.

En plus de cela, une règle supplémentaire pour le nom de la branche:

  1. Ils ne peuvent pas commencer par un tiret -

Merci à Jakub Narębski , la page de manuel de git check-ref-formatcontient plus de détails.

Manoj Govindan
la source
9
Il vaut la peine de mentionner que «>» est autorisé, mais pour basculer vers cette branche dans bash, il faut s'échapper avec un «\» précédent
igniteflow
3
Je suis confus à propos de la règle n ° 2 dans la page de manuel que vous avez liée. Il dit "2. Ils doivent en contenir au moins un /." S'il vous plaît, expliquez? Aucune de mes succursales n'a /de nom.
chharvey
7
@chharvey: une "branche" sans a y /a été heads/ajoutée "automatiquement". En fait: sans /, il n'est pas encore clair si c'est une branche ou un tag ou autre chose ...
Robert Siemer
1
@DMTintner: Les virgules sont autorisées.
Robert Siemer
3
voici une expression régulière pour cela [\\] / g ceci trouvera les caractères invalides afin que vous puissiez les remplacer par un '-' ou n'importe quel caractère que vous voulez
Tony Brix