2014-10-15 8 views
36

Ich habe eine Fehlermeldung bekommt, während Tag [ Zeichen enthält erstellen:Welche Namen sind gültige Git-Tags?

fatal: name '[' ist kein gültiger Tag.

Frage: Gibt es Regeln für Tags in der Git?

Antwort

48

können Sie überprüfen, ob der Name mit

git check-ref-format 

Diese page enthält die Einschränkungen für einen gültigen Namen gültig ist. Zitat von der Seite (möglicherweise in Zukunft veraltet):

  1. Sie können slash / für hierarchische (Verzeichnis) Gruppierung umfassen, aber keine Schrägstriche getrennte Komponente kann mit der Sequenz mit einem Punkt . oder enden beginnen .lock.

  2. Sie müssen mindestens eine / enthalten. Dies erzwingt das Vorhandensein einer Kategorie wie heads/, tags/ usw., aber die tatsächlichen Namen sind nicht eingeschränkt. Wenn die Option --allow-onelevel verwendet wird, wird auf diese Regel verzichtet.

  3. Sie können nicht zwei aufeinanderfolgende Punkte .. irgendwo haben.

  4. Sie können nicht ASCII-Steuerzeichen (das heißt Bytes, deren Werte niedriger als \ 040 oder \ 177 DEL), Raum, Tilde ~, caret ^ oder Kolon : überall haben.

  5. Sie können kein Fragezeichen haben ?, Sternchen *, oder offene Klammer irgendwo. Eine Ausnahme von dieser Regel finden Sie unter der folgenden Option --refspec-pattern.

  6. Sie können nicht mit einem Schrägstrich / oder enthalten mehrere aufeinander folgende Schrägstriche (siehe --normalize Option unten für eine Ausnahme von dieser Regel)

  7. Sie können nicht am Ende mit einem Punkt . beginnen oder enden.

  8. Sie können keine Sequenz @{ enthalten.

  9. Sie können nicht das einzelne Zeichen @ sein.

  10. Sie können keine \ enthalten.

Wie Sie in Ihrem Fall sehen können, verletzt du Regel (5).

können Sie die --normalize Flag verwenden Tags in Bezug auf normalisieren zu Schrägstriche (Entfernen von Schrägstriche sowie aufeinanderfolgende):

git check-ref-format --normalize "tags/weird//tag" 

Die tags/ Teil Arten, die Sie tag validieren.

Nach einiger Diskussion mit @NikosAlexandris, können Sie die folgenden Einzeiler schreiben den Tag <some-tag> mit textuellem Feedback zu überprüfen:

git check-ref-format "tags/<some-tag>" && echo "Valid tag" || echo "Invalid tag!" 
+1

Die --normalize Option tatsächlich nur Griffe Schrägstriche. Es funktioniert nicht für andere Probleme, wie das Vorhandensein von ~. –

+0

@VincentFourmond: In der Tat, das Programm endet mit Exit-Code '1' (also Fehler), ein Fehler vielleicht? –

+3

nein, es verhält sich wie erwartet von der man-Seite: 'Normalisieren Sie refname, indem Sie alle führenden Schrägstriche (/) entfernen und aufeinanderfolgende Schrägstriche zwischen Namensbestandteilen in einem einzigen Schrägstrich zusammenfassen. Wenn der normalisierte Refname gültig ist, pint ihn zur Standardausgabe und beende ihn mit dem Status 0. (--print ist eine veraltete Schreibweise - normalize.) 'Es ist einfach nicht das was du sagst; -) ... –

Verwandte Themen