Quali personaggi sono illegali all'interno di un nome di ramo?


Risposte:


299

Regole di denominazione per refname:

Git impone le seguenti regole su come vengono nominati i riferimenti:

  1. Possono includere barra /per il raggruppamento gerarchico (di directory), ma nessun componente separato da barra può iniziare con un punto .o terminare con la sequenza .lock.

  2. Devono contenere almeno uno /. Ciò impone la presenza di una categoria come heads/, tags/ecc. Ma i nomi effettivi non sono limitati. Se --allow-onelevelviene utilizzata l' opzione, questa regola viene revocata.

  3. Non possono avere due punti consecutivi ..ovunque.

  4. Non possono avere caratteri di controllo ASCII (ovvero byte i cui valori sono inferiori a \040, o \177 DEL), spazio, tilde ~, cursore ^o due punti :ovunque.

  5. Non possono avere punti interrogativi ?, asterisco *o parentesi aperta da [nessuna parte. Vedere l' --refspec-patternopzione di seguito per un'eccezione a questa regola.

  6. Non possono iniziare o terminare con una barra /o contenere più barre consecutive (vedere l' --normalizeopzione di seguito per un'eccezione a questa regola)

  7. Non possono finire con un punto ..

  8. Non possono contenere una sequenza @{.

  9. Non possono essere il singolo personaggio @.

  10. Non possono contenere a \.

Inoltre, regola aggiuntiva per il nome del ramo:

  1. Non possono iniziare con un trattino -

Grazie a Jakub Narębski , la pagina man di git check-ref-formatha più dettagli.


9
Vale la pena ricordare che '>' è consentito, ma per passare a quel ramo in bash è necessario scappare con un precedente '\'
igniteflow

3
Sono confuso sulla regola n. 2 nella pagina man che hai collegato. Dice "2. Devono contenere almeno uno /". Spiega per favore? Nessuno dei miei rami ha un /nel nome.
Chharvey,

7
@chharvey: un "ramo" senza un /ha heads/anteposto ad esso "automaticamente". In realtà: senza un /, non è ancora chiaro se si tratta di un ramo o di un tag o qualcos'altro ...
Robert Siemer,

1
@DMTintner: le virgole sono consentite.
Robert Siemer,

3
ecco un'espressione regolare per questo /^[\./[|\.\.|@{|[\/\.[$|^@$|[~^:\x00-\x20\x7F\s?* [\\] / g questo troverà i caratteri non validi in modo da poterli sostituire con un '-' o qualunque personaggio tu voglia
Tony Brix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.