English ▾ Themen ▾ Neueste Version ▾ git-check-ref-format zuletzt aktualisiert in 2.52.0

NAME

git-check-ref-format - Stellt sicher, dass ein Referenzname gut formatiert ist

SYNOPSIS

git check-ref-format [--normalize]
       [--[no-]allow-onelevel] [--refspec-pattern]
       <refname>
git check-ref-format --branch <branchname-shorthand>

BESCHREIBUNG

Überprüft, ob ein gegebener refname akzeptabel ist, und beendet sich mit einem Nicht-Null-Status, wenn dies nicht der Fall ist.

Eine Referenz wird in Git verwendet, um Branches und Tags zu spezifizieren. Ein Branch-Head wird in der refs/heads-Hierarchie gespeichert, während ein Tag in der refs/tags-Hierarchie des Referenz-Namensraums gespeichert wird (typischerweise in den Verzeichnissen $GIT_DIR/refs/heads und $GIT_DIR/refs/tags oder als Einträge in der Datei $GIT_DIR/packed-refs, wenn Referenzen von git gc gepackt werden).

Git legt folgende Regeln für die Benennung von Referenzen fest:

  1. Sie können Schrägstriche / für hierarchische (Verzeichnis-)Gruppierung enthalten, aber keine schrägstrichgetrennte Komponente darf mit einem Punkt . beginnen oder mit der Sequenz .lock enden.

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

  3. Sie dürfen nirgendwo zwei aufeinanderfolgende Punkte .. haben.

  4. Sie dürfen keine ASCII-Steuerzeichen (d. h. Bytes mit Werten kleiner als \040 oder \177 DEL), Leerzeichen, Tilde ~, Caret ^ oder Doppelpunkt : enthalten.

  5. Sie dürfen nirgendwo Fragezeichen ?, Sternchen * oder öffnende Klammern [ enthalten. Siehe die Option --refspec-pattern unten für eine Ausnahme von dieser Regel.

  6. Sie dürfen nicht mit einem Schrägstrich / beginnen oder enden oder mehrere aufeinanderfolgende Schrägstriche enthalten (siehe die Option --normalize unten für eine Ausnahme von dieser Regel).

  7. Sie dürfen nicht mit einem Punkt . enden.

  8. Sie dürfen keine Sequenz @{ enthalten.

  9. Sie dürfen nicht das einzelne Zeichen @ sein.

  10. Sie dürfen kein \ enthalten.

Diese Regeln erleichtern Shell-Skript-basierten Werkzeugen das Parsen von Referenznamen, die Pfadnamenerweiterung durch die Shell, wenn ein Referenzname unquoted (versehentlich) verwendet wird, und vermeiden auch Mehrdeutigkeiten in bestimmten Referenznamenausdrücken (siehe gitrevisions[7]).

  1. Ein doppelter Punkt .. wird oft wie in ref1..ref2 verwendet, und in einigen Kontexten bedeutet diese Notation ^ref1 ref2 (d. h. nicht in ref1 und in ref2).

  2. Eine Tilde ~ und ein Caret ^ werden verwendet, um die Nachfolgeoperationen für den n-ten Elternteil und Zwiebelschälen einzuleiten.

  3. Ein Doppelpunkt : wird wie in srcref:dstref verwendet, um "verwende den Wert von srcref und speichere ihn in dstref" bei Fetch- und Push-Operationen zu bedeuten. Er kann auch verwendet werden, um ein bestimmtes Objekt auszuwählen, wie bei 'git cat-file': "git cat-file blob v1.3.3:refs.c".

  4. Eine offene Klammer mit At-Zeichen @{ wird als Notation zur Anzeige eines Reflog-Eintrags verwendet.

Mit der Option --branch nimmt der Befehl einen Namen entgegen und prüft, ob er als gültiger Branch-Name verwendet werden kann (z. B. beim Erstellen eines neuen Branches). Seien Sie jedoch vorsichtig bei der Verwendung der früheren Checkout-Syntax, die auf einen Detached HEAD-Zustand verweisen kann. Die Regel, die git check-ref-format --branch $name implementiert, kann strenger sein als das, was git check-ref-format refs/heads/$name sagt (z. B. kann ein Bindestrich am Anfang einer Referenzkomponente erscheinen, ist aber am Anfang eines Branch-Namens ausdrücklich verboten). Wenn der Befehl mit der Option --branch in einem Repository ausgeführt wird, wird die Eingabe zuerst für die "frühere Checkout-Syntax" @{-n} erweitert. Zum Beispiel ist @{-1} eine Möglichkeit, auf das letzte Element zu verweisen, das mit einer "git switch" oder "git checkout"-Operation ausgecheckt wurde. Diese Option sollte von Porcelains verwendet werden, um diese Syntax überall dort zu akzeptieren, wo ein Branch-Name erwartet wird, damit sie sich so verhalten können, als hätten Sie den Branch-Namen eingegeben. Als Ausnahme ist zu beachten, dass die "frühere Checkout-Operation" zu einem Commit-Objektnamen führen kann, wenn das N-te zuletzt ausgecheckte Element kein Branch war.

OPTIONEN

--allow-onelevel
--no-allow-onelevel

Steuert, ob einstufige Referenznamen akzeptiert werden (d. h. Referenznamen, die nicht mehrere durch / getrennte Komponenten enthalten). Standardmäßig ist --no-allow-onelevel eingestellt.

--refspec-pattern

Interpretiert <refname> als Muster für einen Referenznamen für einen Refspec (wie bei Remote-Repositories verwendet). Wenn diese Option aktiviert ist, darf <refname> einen einzelnen * im Refspec enthalten (z. B. foo/bar*/baz oder foo/bar*baz/, aber nicht foo/bar*/baz*).

--normalize

Normalisiert refname, indem führende Schrägstrich (/) Zeichen entfernt und Folgen von aufeinanderfolgenden Schrägstrichen zwischen Namenskomponenten zu einem einzigen Schrägstrich komprimiert werden. Wenn der normalisierte Referenzname gültig ist, wird er auf die Standardausgabe ausgegeben und der Befehl beendet sich mit dem Status 0, andernfalls beendet er sich mit einem Nicht-Null-Status. (--print ist eine veraltete Schreibweise für --normalize.)

BEISPIELE

  • Gibt den Namen des zuletzt ausgecheckten Elements aus

    $ git check-ref-format --branch @{-1}
  • Bestimmt den zu verwendenden Referenznamen für einen neuen Branch

    $ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")||
    { echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }

GIT

Teil der git[1] Suite