Beim Erstellen eines Tags mit [
Zeichen wird eine Fehlermeldung angezeigt :
fatal: '[' ist kein gültiger Tag-Name.
Frage: Gibt es Regeln für Tags im Git?
Sie können überprüfen, ob der Name mit gültig ist
git check-ref-format
Diese Seite enthält die Einschränkungen für einen gültigen Namen. Zitiert von der Seite (möglicherweise in Zukunft veraltet):
Sie können einen Schrägstrich
/
für die hierarchische (Verzeichnis-) Gruppierung enthalten, aber keine durch Schrägstriche getrennte Komponente kann mit einem Punkt beginnen.
oder mit der Sequenz enden.lock
.Sie müssen mindestens eine enthalten
/
. Dies erzwingt das Vorhandensein einer Kategorie wieheads/
,tags/
etc. , aber die tatsächlichen Namen sind nicht eingeschränkt. Wenn die--allow-onelevel
Option verwendet wird, wird auf diese Regel verzichtet.Sie können
..
nirgendwo zwei aufeinanderfolgende Punkte haben .Sie dürfen nirgendwo ASCII-Steuerzeichen (dh Bytes mit Werten unter \ 040 oder \ 177
DEL
), Leerzeichen, Tilde~
, Caret^
oder Doppelpunkt haben:
.Sie dürfen nirgendwo ein Fragezeichen
?
, ein Sternchen*
oder eine offene Klammer haben[
. In der folgenden--refspec-pattern
Option finden Sie eine Ausnahme von dieser Regel.Sie können nicht mit einem Schrägstrich beginnen oder enden
/
oder mehrere aufeinanderfolgende Schrägstriche enthalten (--normalize
eine Ausnahme von dieser Regel finden Sie in der folgenden Option).Sie können nicht mit einem Punkt enden
.
.Sie können keine Sequenz enthalten
@{
.Sie können nicht das einzelne Zeichen sein
@
.Sie können keine enthalten
\
.
Wie Sie sehen, haben Sie in Ihrem Fall gegen Regel (5) verstoßen.
Mit dem --normalize
Flag können Sie Tags in Bezug auf Schrägstriche normalisieren (sowohl führende als auch aufeinanderfolgende Schrägstriche entfernen):
git check-ref-format --normalize "tags/weird//tag"
Die tags/
Teilart, die Sie validieren a tag
.
Nach einigen Diskussionen mit @NikosAlexandris können Sie den folgenden Liner schreiben, um das Tag <some-tag>
mit Textfeedback zu überprüfen :
git check-ref-format "tags/<some-tag>" && echo "Valid tag" || echo "Invalid tag"
remote/branch
oder verweisen könnenHEAD^1
(um das vorletzte Commit des Kopfes zu erhalten) usw. Schließlich ist ein Tag nur ein "spezieller Name" für ein Commit. Um die Referenz zwischen einem Tag, einem entfernten Zweig, einem relativen Pfad usw. eindeutig zu machen, sind die Namen eingeschränkt. Unter Windows können Sie beispielsweise keine Datei benennen..
, da der Pfad../foo
dann einige schwerwiegende Probleme haben würde. Unix löst dies normalerweise durch Escapezeichen, aber hier werden "Tag Space", "Branch Space" und "Relative Commit Space" "zusammengeführt".v1.4
ist ein gültiges Tag, das von Version 2.21.0 akzeptiert wird. Siehe Git Basics - Tagging .refs/tags/v1.4
, beachten Sie, dass git es voranstelltrefs/tags/
.