Które znaki są nielegalne w nazwie oddziału?

Odpowiedzi:

299

Reguły nazewnictwa dla zmiany nazwy:

Git nakłada następujące zasady dotyczące nazw odniesień:

  1. Mogą zawierać ukośnik /do grupowania hierarchicznego (katalogu), ale żaden składnik oddzielony ukośnikiem nie może zaczynać się kropką .ani kończyć sekwencją .lock.

  2. Muszą zawierać co najmniej jeden /. To wymusza obecność kategorii jak heads/, tags/itp ale rzeczywiste imiona nie są ograniczone. Jeśli --allow-onelevelzostanie użyta opcja, reguła zostanie zniesiona.

  3. ..Nigdzie nie mogą mieć dwóch kolejnych kropek .

  4. Nie mogą mieć nigdzie znaków kontrolnych ASCII (tj. Bajtów, których wartości są niższe niż \040lub \177 DEL), spacji, tyldy ~, karetki ^lub dwukropka :.

  5. Nie mogą nigdzie mieć znaku zapytania ?, gwiazdki *ani nawiasu otwartego [. Zobacz --refspec-patternopcję poniżej, aby uzyskać wyjątek od tej reguły.

  6. Nie mogą zaczynać się ani kończyć ukośnikiem /ani zawierać wielu następujących po sobie ukośników ( --normalizewyjątek od tej reguły znajduje się poniżej)

  7. Nie mogą kończyć się kropką ..

  8. Nie mogą zawierać sekwencji @{.

  9. Nie mogą być pojedynczą postacią @.

  10. Nie mogą zawierać \.

Ponadto dodatkowa reguła dla nazwy oddziału:

  1. Nie mogą zaczynać się od myślnika -

Dzięki Jakub Narębski , na stronie man dla git check-ref-formatma więcej szczegółów.

Manoj Govindan
źródło
9
Warto wspomnieć, że „>” jest dozwolone, ale przejście do tej gałęzi w bash wymaga ucieczki z poprzedzającym „\”
igniteflow
3
Jestem zdezorientowany co do zasady nr 2 na stronie podręcznika, do której linkowałeś. Mówi „2. Muszą zawierać co najmniej jeden /”. Proszę wytłumacz? Żadna z moich gałęzi nie ma /nazwy.
chharvey
7
@chharvey: „oddział” bez /zostały heads/dołączany do niego „automatycznie”. Właściwie: bez a /nie jest jeszcze jasne, czy jest to gałąź, tag czy coś innego ...
Robert Siemer
1
@DMTintner: Przecinki są dozwolone.
Robert Siemer
3
tutaj jest wyrażenie regularne dla tego /^[\./]|\.\.|@{|[\/\.]$|^@$|[~^:\x00-\x20\x7F\s?* [\\] / g znajdzie to nieprawidłowe znaki, dzięki czemu możesz zastąpić je znakiem „-” lub dowolną inną postacią
Tony Brix