English ▾ Themen ▾ Neueste Version ▾ git-update-ref zuletzt aktualisiert in 2.50.0

NAME

git-update-ref - Aktualisiert den Objektname, der in einem Ref gespeichert ist, sicher

SYNOPSIS

git update-ref [-m <reason>] [--no-deref] -d <ref> [<old-oid>]
git update-ref [-m <reason>] [--no-deref] [--create-reflog] <ref> <new-oid> [<old-oid>]
git update-ref [-m <reason>] [--no-deref] --stdin [-z] [--batch-updates]

BESCHREIBUNG

Mit zwei Argumenten wird die <neues-oid> in das <ref> gespeichert, wobei symbolische Refs möglicherweise aufgelöst werden. Z.B. aktualisiert git update-ref HEAD <neues-oid> den aktuellen Branch-Head auf das neue Objekt.

Mit drei Argumenten wird die <neues-oid> in das <ref> gespeichert, wobei symbolische Refs möglicherweise aufgelöst werden, nachdem überprüft wurde, ob der aktuelle Wert des <ref> mit <alte-oid> übereinstimmt. Z.B. aktualisiert git update-ref refs/heads/master <neues-oid> <alte-oid> den Master-Branch-Head auf <neues-oid>, nur wenn sein aktueller Wert <alte-oid> ist. Sie können 40 "0" oder eine leere Zeichenkette als <alte-oid> angeben, um sicherzustellen, dass das von Ihnen erstellte Ref nicht existiert.

Die letzten Argumente sind Objektnamen; dieser Befehl unterstützt ohne Optionen nicht das Aktualisieren eines symbolischen Refs, damit es auf ein anderes Ref zeigt (siehe git-symbolic-ref[1]). Aber git update-ref --stdin hat die Befehle symref-*, damit normale Refs und symbolische Refs in derselben Transaktion committet werden können.

Wenn --no-deref angegeben wird, wird das <ref> selbst überschrieben, anstatt das Ergebnis des Auflösens der symbolischen Zeiger.

Mit -d wird das benannte <ref> gelöscht, nachdem überprüft wurde, ob es noch <alte-oid> enthält.

Mit --stdin liest update-ref Anweisungen von der Standardeingabe und führt alle Modifikationen gemeinsam aus. Geben Sie Befehle der Form an

update SP <ref> SP <new-oid> [SP <old-oid>] LF
create SP <ref> SP <new-oid> LF
delete SP <ref> [SP <old-oid>] LF
verify SP <ref> [SP <old-oid>] LF
symref-update SP <ref> SP <new-target> [SP (ref SP <old-target> | oid SP <old-oid>)] LF
symref-create SP <ref> SP <new-target> LF
symref-delete SP <ref> [SP <old-target>] LF
symref-verify SP <ref> [SP <old-target>] LF
option SP <opt> LF
start LF
prepare LF
commit LF
abort LF

Mit --create-reflog erstellt update-ref für jedes Ref ein Reflog, auch wenn normalerweise keines erstellt würde.

Mit --batch-updates führt update-ref die Aktualisierungen stapelweise aus, erlaubt aber einzelnen Aktualisierungen, aufgrund ungültiger oder falscher Benutzereingaben fehzuschlagen, und wendet nur die erfolgreichen Aktualisierungen an. Systembezogene Fehler – wie E/A-Fehler oder Speicherprobleme – führen jedoch zu einem vollständigen Fehlschlagen aller stapelweisen Aktualisierungen. Fehlgeschlagene Aktualisierungen werden im folgenden Format gemeldet

rejected SP (<old-oid> | <old-target>) SP (<new-oid> | <new-target>) SP <rejection-reason> LF

Felder, die Leerzeichen enthalten, werden so zitiert, als wären sie Zeichenketten im Quellcode von C; d.h., von doppelten Anführungszeichen umschlossen und mit Backslash-Escapes. Verwenden Sie 40 "0"-Zeichen oder eine leere Zeichenkette, um einen Nullwert anzugeben. Um einen fehlenden Wert anzugeben, lassen Sie den Wert und das vorangehende Leerzeichen vollständig weg.

Alternativ verwenden Sie -z, um das Format NUL-terminiert anzugeben, ohne Anführungszeichen

update SP <ref> NUL <new-oid> NUL [<old-oid>] NUL
create SP <ref> NUL <new-oid> NUL
delete SP <ref> NUL [<old-oid>] NUL
verify SP <ref> NUL [<old-oid>] NUL
symref-update SP <ref> NUL <new-target> [NUL (ref NUL <old-target> | oid NUL <old-oid>)] NUL
symref-create SP <ref> NUL <new-target> NUL
symref-delete SP <ref> [NUL <old-target>] NUL
symref-verify SP <ref> [NUL <old-target>] NUL
option SP <opt> NUL
start NUL
prepare NUL
commit NUL
abort NUL

In diesem Format verwenden Sie 40 "0", um einen Nullwert anzugeben, und eine leere Zeichenkette, um einen fehlenden Wert anzugeben.

In beiden Formaten können Werte in jeder Form angegeben werden, die Git als Objektnamen erkennt. Befehle in einem anderen Format oder ein wiederholtes <ref> erzeugen einen Fehler. Bedeutungen der Befehle sind

update

Setzt <ref> auf <neues-oid>, nachdem <alte-oid> überprüft wurde, falls angegeben. Geben Sie eine Null-<neues-oid> an, um sicherzustellen, dass das Ref nach der Aktualisierung nicht existiert, und/oder eine Null-<alte-oid>, um sicherzustellen, dass das Ref vor der Aktualisierung nicht existiert.

create

Erstellt <ref> mit <neues-oid>, nachdem überprüft wurde, dass es nicht existiert. Die angegebene <neues-oid> darf nicht Null sein.

delete

Löscht <ref>, nachdem überprüft wurde, dass es mit <alte-oid> existiert, falls angegeben. Wenn angegeben, darf <alte-oid> nicht Null sein.

symref-update

Setzt <ref> auf <neues-ziel>, nachdem <altes-ziel> oder <alte-oid> überprüft wurde, falls angegeben. Geben Sie eine Null-<alte-oid> an, um sicherzustellen, dass das Ref vor der Aktualisierung nicht existiert.

verify

Überprüft <ref> gegen <alte-oid>, ändert es aber nicht. Wenn <alte-oid> Null oder fehlend ist, darf das Ref nicht existieren.

symref-create: Erstellt ein symbolisches Ref <ref> mit <neues-ziel>, nachdem überprüft wurde, dass es nicht existiert.

symref-delete

Löscht <ref>, nachdem überprüft wurde, dass es mit <altes-ziel> existiert, falls angegeben.

symref-verify

Überprüft ein symbolisches <ref> gegen <altes-ziel>, ändert es aber nicht. Wenn <altes-ziel> fehlt, darf das Ref nicht existieren. Kann nur im Modus no-deref verwendet werden.

option

Ändert das Verhalten des nächsten Befehls, der ein <ref> benennt. Die einzig gültige Option ist no-deref, um das Auflösen eines symbolischen Refs zu vermeiden.

start

Startet eine Transaktion. Im Gegensatz zu einer nicht-transaktionalen Sitzung wird eine Transaktion automatisch abgebrochen, wenn die Sitzung ohne explizites Commit beendet wird. Dieser Befehl kann eine neue leere Transaktion erstellen, wenn die aktuelle bereits committet oder abgebrochen wurde.

prepare

Bereitet die Transaktion zum Commit vor. Dies erstellt Sperrdateien für alle wartenden Referenzaktualisierungen. Wenn eine Referenz nicht gesperrt werden konnte, wird die Transaktion abgebrochen.

commit

Committet alle Referenzaktualisierungen, die für die Transaktion auf Warteliste stehen, und beendet die Transaktion.

abort

Bricht die Transaktion ab und gibt alle Sperren frei, wenn sich die Transaktion im vorbereiteten Zustand befindet.

Wenn alle <ref>s gleichzeitig mit passenden <alte-oid>s gesperrt werden können, werden alle Modifikationen durchgeführt. Andernfalls werden keine Modifikationen durchgeführt. Beachten Sie, dass, obwohl jede einzelne <ref> atomar aktualisiert oder gelöscht wird, ein gleichzeitiger Leser möglicherweise immer noch eine Teilmenge der Modifikationen sieht.

PROTOKOLLIERUNG VON AKTUALISIERUNGEN

Wenn der Konfigurationsparameter "core.logAllRefUpdates" auf true gesetzt ist und das Ref eines der Verzeichnisse "refs/heads/", "refs/remotes/", "refs/notes/" oder ein Pseudoref wie HEAD oder ORIG_HEAD ist; oder die Datei "$GIT_DIR/logs/<ref>" existiert, dann hängt git update-ref eine Zeile an die Logdatei "$GIT_DIR/logs/<ref>" (wobei alle symbolischen Refs aufgelöst werden, bevor der Logname erstellt wird) an, die die Änderung des Ref-Werts beschreibt. Logzeilen werden formatiert als

oldsha1 SP newsha1 SP committer LF

Wobei "alte-sha1" der 40-stellige hexadezimale Wert ist, der zuvor in <ref> gespeichert war, "neue-sha1" der 40-stellige hexadezimale Wert von <neues-oid> ist und "committer" der Name, die E-Mail-Adresse und das Datum des Committers im Standard-Git-Committer-Ident-Format sind.

Optional mit -m

oldsha1 SP newsha1 SP committer TAB message LF

Wobei alle Felder wie oben beschrieben sind und "nachricht" der Wert ist, der der Option -m übergeben wurde.

Eine Aktualisierung schlägt fehl (ohne Ändern von <ref>), wenn der aktuelle Benutzer keine neue Logdatei erstellen kann, nicht in die vorhandene Logdatei anhängen kann oder keine Committer-Informationen verfügbar hat.

ANMERKUNGEN

Symbolische Refs wurden ursprünglich mithilfe von symbolischen Links implementiert. Dies ist nun veraltet, da nicht alle Dateisysteme symbolische Links unterstützen.

Dieser Befehl folgt nur **echten** Symlinks, wenn sie mit "refs/" beginnen: andernfalls versucht er nur, sie zu lesen und als reguläre Datei zu aktualisieren (d.h., er erlaubt dem Dateisystem, ihnen zu folgen, aber er überschreibt einen solchen Symlink zu einem anderen Ort mit einem regulären Dateinamen).

SIEHE AUCH

GIT

Teil der git[1] Suite