English ▾ Themen ▾ Neueste Version ▾ git-notes zuletzt aktualisiert in 2.50.0

NAME

git-notes - Notizen zu Objekten hinzufügen oder inspizieren

SYNOPSIS

git notes [list [<object>]]
git notes add [-f] [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [-e] [<object>]
git notes copy [-f] ( --stdin | <from-object> [<to-object>] )
git notes append [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [-e] [<object>]
git notes edit [--allow-empty] [<object>] [--[no-]stripspace]
git notes show [<object>]
git notes merge [-v | -q] [-s <strategy> ] <notes-ref>
git notes merge --commit [-v | -q]
git notes merge --abort [-v | -q]
git notes remove [--ignore-missing] [--stdin] [<object>…​]
git notes prune [-n] [-v]
git notes get-ref

BESCHREIBUNG

Fügt Notizen zu Objekten hinzu, entfernt oder liest sie, ohne die Objekte selbst zu berühren.

Standardmäßig werden Notizen in refs/notes/commits gespeichert und von dort gelesen, aber dieser Standard kann überschrieben werden. Siehe unten die Abschnitte OPTIONEN, KONFIGURATION und UMWELT. Wenn dieser Ref nicht existiert, wird er leise erstellt, wenn er zum ersten Mal zum Speichern einer Notiz benötigt wird.

Eine typische Verwendung von Notizen ist die Ergänzung einer Commit-Nachricht, ohne den Commit selbst zu ändern. Notizen können mit git log zusammen mit der ursprünglichen Commit-Nachricht angezeigt werden. Um diese Notizen von der im Commit-Objekt gespeicherten Nachricht zu unterscheiden, werden die Notizen wie die Nachricht eingerückt, nach einer nicht eingerückten Zeile, die "Notes (<refname>):" (oder "Notes:" für refs/notes/commits) lautet.

Notizen können auch zu Patches hinzugefügt werden, die mit git format-patch vorbereitet wurden, indem die Option --notes verwendet wird. Solche Notizen werden als Patch-Kommentar nach einer Trennlinie mit drei Bindestrichen hinzugefügt.

Um zu ändern, welche Notizen von git log angezeigt werden, siehe die Diskussion zu notes.displayRef in KONFIGURATION.

Siehe die Konfiguration notes.rewrite.<command> für eine Möglichkeit, Notizen über Befehle hinweg zu tragen, die Commits umschreiben.

UNTERBEFEHLE

list

Listet das Notizenobjekt für ein gegebenes Objekt auf. Wenn kein Objekt angegeben ist, wird eine Liste aller Notizenobjekte und der Objekte, die sie annotieren, angezeigt (im Format "<note-object> <annotated-object>"). Dies ist der Standardunterbefehl, wenn kein Unterbefehl angegeben wird.

add

Fügt Notizen für ein gegebenes Objekt hinzu (standardmäßig HEAD). Abbruch, wenn das Objekt bereits Notizen hat (verwenden Sie -f, um vorhandene Notizen zu überschreiben). Wenn Sie jedoch add interaktiv verwenden (mit einem Editor zur Angabe des Inhalts der Notizen), werden die vorhandenen Notizen stattdessen im Editor geöffnet (wie beim Unterbefehl edit). Wenn Sie mehrere -m und -F angeben, wird eine Leerzeile zwischen den Nachrichten eingefügt. Verwenden Sie die Option --separator, um andere Trennzeichen einzufügen. Sie können -e verwenden, um die von den Optionen -m und -F bereitgestellten Nachrichten interaktiv (mithilfe eines Editors) zu bearbeiten und zu verfeinern, bevor die Notiz hinzugefügt wird.

copy

Kopiert die Notizen des ersten Objekts auf das zweite Objekt (standardmäßig HEAD). Abbruch, wenn das zweite Objekt bereits Notizen hat oder wenn das erste Objekt keine hat (verwenden Sie -f, um vorhandene Notizen auf das zweite Objekt zu überschreiben). Dieser Unterbefehl ist äquivalent zu: git notes add [-f] -C $(git notes list <from-object>) <to-object>

Im Modus --stdin werden Zeilen im Format

<from-object> SP <to-object> [ SP <rest> ] LF

aus der Standardeingabe gelesen und die Notizen von jedem <from-object> auf das entsprechende <to-object> kopiert. (Der optionale <rest> wird ignoriert, damit der Befehl die Eingabe des post-rewrite Hooks lesen kann.)

--stdin kann nicht mit Objektnamen kombiniert werden, die auf der Kommandozeile angegeben sind.

append

Hängt neue Nachrichten, die über die Optionen -m oder -F bereitgestellt werden, an eine vorhandene Notiz an oder fügt sie als neue Notiz hinzu, wenn keine vorhanden ist, für das Objekt (standardmäßig HEAD). Beim Anhängen an eine vorhandene Notiz wird vor jeder neuen Nachricht eine Leerzeile als Absatztrenner eingefügt. Der Trenner kann mit der Option --separator angepasst werden. Bearbeiten Sie die anzuhängenden Notizen, die über die Optionen -m und -F bereitgestellt werden, mit -e interaktiv (mithilfe eines Editors), bevor die Notiz angehängt wird.

edit

Bearbeitet die Notizen für ein gegebenes Objekt (standardmäßig HEAD).

show

Zeigt die Notizen für ein gegebenes Objekt an (standardmäßig HEAD).

merge

Führt den gegebenen Notizen-Ref in den aktuellen Notizen-Ref zusammen. Dies versucht, die Änderungen, die vom gegebenen Notizen-Ref (genannt "remote") seit dem Merge-Basis (falls vorhanden) vorgenommen wurden, in den aktuellen Notizen-Ref (genannt "local") zusammenzuführen.

Wenn Konflikte auftreten und keine Strategie zur automatischen Auflösung von Notizenkonflikten (siehe Abschnitt "NOTIZEN-MERGE-STRATEGIEN") angegeben ist, wird der manual-Resolver verwendet. Dieser Resolver überprüft die konfligierenden Notizen in einem speziellen Arbeitsbaum (.git/NOTES_MERGE_WORKTREE) und weist den Benutzer an, die Konflikte dort manuell zu lösen. Wenn dies erledigt ist, kann der Benutzer den Merge entweder mit git notes merge --commit abschließen oder den Merge mit git notes merge --abort abbrechen.

remove

Entfernt die Notizen für gegebene Objekte (standardmäßig HEAD). Wenn null oder ein Objekt von der Kommandozeile angegeben wird, ist dies äquivalent zur Angabe einer leeren Notiznachricht für den Unterbefehl edit.

Im Modus --stdin werden auch die auf der Standardeingabe angegebenen Objektnamen entfernt. Mit anderen Worten, --stdin kann mit Objektnamen von der Kommandozeile kombiniert werden.

prune

Entfernt alle Notizen für nicht existierende/nicht erreichbare Objekte.

get-ref

Gibt den aktuellen Notizen-Ref aus. Dies bietet eine einfache Möglichkeit, den aktuellen Notizen-Ref abzurufen (z. B. aus Skripten).

OPTIONEN

-f
--force

Beim Hinzufügen von Notizen zu einem Objekt, das bereits Notizen hat, werden die vorhandenen Notizen überschrieben (anstatt abzubrechen).

-m <msg>
--message=<msg>

Verwendet die angegebene Notiznachricht (anstatt zur Eingabe aufzufordern). Wenn mehrere -m-Optionen angegeben werden, werden ihre Werte als separate Absätze verkettet.

-F <file>
--file=<file>

Nimmt die Notiznachricht aus der angegebenen Datei. Verwenden Sie -, um die Notiznachricht aus der Standardeingabe zu lesen.

-C <object>
--reuse-message=<object>

Nimmt das gegebene Blob-Objekt (z. B. eine andere Notiz) als Notiznachricht. (Verwenden Sie stattdessen git notes copy <object>, um Notizen zwischen Objekten zu kopieren.) Impliziert --no-stripspace, da das Standardverhalten darin besteht, die Nachricht wortwörtlich zu kopieren.

-c <object>
--reedit-message=<object>

Ähnlich wie -C, aber mit -c wird der Editor aufgerufen, damit der Benutzer die Notiznachricht weiter bearbeiten kann.

--allow-empty

Erlaubt das Speichern eines leeren Notizenobjekts. Das Standardverhalten ist das automatische Entfernen leerer Notizen.

--separator=<paragraph-break>
--separator
--no-separator

Gibt eine Zeichenkette an, die als benutzerdefinierter Trenner zwischen Absätzen verwendet wird (ein Zeilenumbruch wird bei Bedarf am Ende hinzugefügt). Wenn --no-separator angegeben ist, werden keine Trennzeichen zwischen Absätzen hinzugefügt. Standardmäßig ist es eine Leerzeile.

--stripspace
--no-stripspace

Bereinigt Leerzeichen. Insbesondere (siehe git-stripspace[1])

  • entfernt nachgestellte Leerzeichen von allen Zeilen

  • fasst mehrere aufeinanderfolgende Leerzeilen zu einer einzigen Leerzeile zusammen

  • entfernt Leerzeilen vom Anfang und Ende der Eingabe

  • fügt bei Bedarf einen fehlenden \n zur letzten Zeile hinzu.

--stripspace ist der Standard, außer bei -C/--reuse-message. Beachten Sie jedoch, dass dies von der Reihenfolge ähnlicher Optionen abhängt. Zum Beispiel wird bei -C <object> -m<message> --stripspace verwendet, da der Standard für -m das vorherige -C überschreibt. Dies ist eine bekannte Einschränkung, die möglicherweise in Zukunft behoben wird.

--ref=<ref>

Manipuliert den Notizenbaum in <ref>. Dies überschreibt GIT_NOTES_REF und die Konfiguration core.notesRef. Der Ref gibt den vollständigen Refnamen an, wenn er mit refs/notes/ beginnt; wenn er mit notes/ beginnt, wird refs/ und ansonsten refs/notes/ vorangestellt, um einen vollständigen Namen des Refs zu bilden.

--ignore-missing

Betrachtet es nicht als Fehler, das Entfernen von Notizen von einem Objekt anzufordern, das keine daran angehängten Notizen hat.

--stdin

Nur gültig für remove und copy. Siehe die jeweiligen Unterbefehle.

-n
--dry-run

Entfernt nichts; meldet nur die Objektnamen, deren Notizen entfernt würden.

-s <strategy>
--strategy=<strategy>

Beim Zusammenführen von Notizen werden Notizenkonflikte mit der angegebenen Strategie aufgelöst. Die folgenden Strategien werden erkannt: manual (Standard), ours, theirs, union und cat_sort_uniq. Diese Option überschreibt die Konfigurationseinstellung notes.mergeStrategy. Weitere Informationen zu jeder Notizen-Merge-Strategie finden Sie im Abschnitt "NOTIZEN-MERGE-STRATEGIEN" unten.

--commit

Schließt einen laufenden git notes merge-Vorgang ab. Verwenden Sie diese Option, wenn Sie die durch git notes merge in .git/NOTES_MERGE_WORKTREE gespeicherten Konflikte gelöst haben. Dies ändert den teilweisen Merge-Commit, der von git notes merge erstellt wurde (gespeichert in .git/NOTES_MERGE_PARTIAL), indem die Notizen in .git/NOTES_MERGE_WORKTREE hinzugefügt werden. Der in .git/NOTES_MERGE_REF gespeicherte Notizen-Ref wird zum resultierenden Commit aktualisiert.

--abort

Bricht/setzt einen laufenden git notes merge-Vorgang zurück, d. h. einen Notizen-Merge mit Konflikten. Dies entfernt einfach alle Dateien, die mit dem Notizen-Merge zusammenhängen.

-q
--quiet

Beim Zusammenführen von Notizen im Stillen arbeiten.

-v
--verbose

Beim Zusammenführen von Notizen ausführlicher berichten. Beim Bereinigen von Notizen alle Objektnamen melden, deren Notizen entfernt werden.

DISKUSSION

Commit-Notizen sind Blobs, die zusätzliche Informationen über ein Objekt enthalten (normalerweise Informationen zur Ergänzung der Nachricht eines Commits). Diese Blobs stammen aus Notizen-Refs. Ein Notizen-Ref ist normalerweise ein Branch, der "Dateien" enthält, deren Pfade die Objektnamen der Objekte sind, die sie beschreiben, mit einigen Verzeichnistrennzeichen zur Leistungssteigerung [1].

Jede Notizenänderung erstellt einen neuen Commit am angegebenen Notizen-Ref. Sie können daher die Historie der Notizen einsehen, indem Sie z. B. git log -p notes/commits aufrufen. Derzeit zeichnet die Commit-Nachricht nur auf, welche Operation die Aktualisierung ausgelöst hat, und die Commit-Autorschaft wird nach den üblichen Regeln bestimmt (siehe git-commit[1]). Diese Details können sich in Zukunft ändern.

Es ist auch zulässig, dass ein Notizen-Ref direkt auf ein Baum-Objekt zeigt, in diesem Fall kann die Historie der Notizen mit git log -p -g <refname> gelesen werden.

NOTIZEN-MERGE-STRATEGIEN

Die Standard-Notizen-Merge-Strategie ist manual, die konfligierende Notizen in einem speziellen Arbeitsbaum zum Auflösen von Notizenkonflikten (.git/NOTES_MERGE_WORKTREE) auscheckt und den Benutzer anweist, die Konflikte in diesem Arbeitsbaum zu lösen. Wenn dies erledigt ist, kann der Benutzer den Merge entweder mit git notes merge --commit abschließen oder den Merge mit git notes merge --abort abbrechen.

Benutzer können eine automatisierte Merge-Strategie aus den folgenden auswählen, indem sie entweder die Option -s/--strategy verwenden oder notes.mergeStrategy entsprechend konfigurieren

ours löst Notizenkonflikte automatisch zugunsten der lokalen Version auf (d. h. des aktuellen Notizen-Refs).

theirs löst Notizenkonflikte automatisch zugunsten der Remote-Version auf (d. h. des gegebenen Notizen-Refs, der in den aktuellen Notizen-Ref zusammengeführt wird).

union löst Notizenkonflikte automatisch auf, indem die lokale und die Remote-Version verkettet werden.

cat_sort_uniq ist ähnlich wie union, aber zusätzlich zum Verketten der lokalen und Remote-Version sortiert diese Strategie die resultierenden Zeilen und entfernt Duplikate aus dem Ergebnis. Dies entspricht der Anwendung der Shell-Pipeline "cat | sort | uniq" auf die lokalen und Remote-Versionen. Diese Strategie ist nützlich, wenn die Notizen einem zeilenbasierten Format folgen, bei dem man Duplikate im Merge-Ergebnis vermeiden möchte. Beachten Sie, dass, wenn entweder die lokale oder die Remote-Version vor dem Merge Duplikate enthält, diese ebenfalls von dieser Notizen-Merge-Strategie entfernt werden.

BEISPIELE

Sie können Notizen verwenden, um Anmerkungen mit Informationen hinzuzufügen, die zum Zeitpunkt der Erstellung eines Commits nicht verfügbar waren.

$ git notes add -m 'Tested-by: Johannes Sixt <j6t@kdbg.org>' 72a144e2
$ git show -s 72a144e
[...]
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

Notes:
    Tested-by: Johannes Sixt <j6t@kdbg.org>

Im Prinzip ist eine Notiz ein regulärer Git-Blob, und jede Art von (Nicht-)Format wird akzeptiert. Sie können Notizen aus beliebigen Dateien binärsicher mit git hash-object erstellen.

$ cc *.c
$ blob=$(git hash-object -w a.out)
$ git notes --ref=built add --allow-empty -C "$blob" HEAD

(Sie können nicht einfach git notes --ref=built add -F a.out HEAD verwenden, da dies nicht binärsicher ist.) Natürlich macht es wenig Sinn, Nicht-Text-Format-Notizen mit git log anzuzeigen, daher benötigen Sie wahrscheinlich spezielle Werkzeuge, um nützliche Dinge damit zu tun, wenn Sie solche Notizen verwenden.

KONFIGURATION

core.notesRef

Notizen-Ref, von dem Notizen anstelle von refs/notes/commits gelesen und manipuliert werden sollen. Muss ein nicht abgekürzter Ref-Name sein. Diese Einstellung kann über die Umgebung und die Kommandozeile überschrieben werden.

Alles oberhalb dieser Zeile in diesem Abschnitt ist nicht in der Dokumentation von git-config[1] enthalten. Der nachfolgende Inhalt ist derselbe wie dort zu finden.

notes.mergeStrategy

Welche Merge-Strategie standardmäßig bei der Auflösung von Notizen-Konflikten gewählt werden soll. Muss einer der Werte manual, ours, theirs, union oder cat_sort_uniq sein. Standardmäßig manual. Siehe den Abschnitt "NOTES MERGE STRATEGIES" in git-notes[1] für weitere Informationen zu jeder Strategie.

Diese Einstellung kann durch Übergabe der Option --strategy an git-notes[1] überschrieben werden.

notes.<name>.mergeStrategy

Welche Merge-Strategie bei einem Notizen-Merge in refs/notes/<name> gewählt werden soll. Dies überschreibt die allgemeinere Einstellung notes.mergeStrategy. Siehe den Abschnitt "NOTES MERGE STRATEGIES" in git-notes[1] für weitere Informationen zu den verfügbaren Strategien.

notes.displayRef

Welcher Ref (oder welche Refs, wenn ein Glob oder mehrfach angegeben), zusätzlich zu dem von core.notesRef oder GIT_NOTES_REF standardmäßig festgelegten Ref, aus dem Notizen gelesen werden sollen, wenn Commit-Nachrichten mit der git log-Befehlsfamilie angezeigt werden.

Diese Einstellung kann mit der Umgebungsvariable GIT_NOTES_DISPLAY_REF überschrieben werden, die eine durch Doppelpunkte getrennte Liste von Refs oder Globs sein muss.

Für nicht existierende Refs wird eine Warnung ausgegeben, ein Glob, der keine Refs findet, wird jedoch stillschweigend ignoriert.

Diese Einstellung kann durch die Option --no-notes für die git log-Befehlsfamilie oder durch die Option --notes=<ref>, die von diesen Befehlen akzeptiert wird, deaktiviert werden.

Der effektive Wert von core.notesRef (möglicherweise überschrieben durch GIT_NOTES_REF) wird ebenfalls implizit zur Liste der anzuzeigenden Refs hinzugefügt.

notes.rewrite.<command>

Beim Umschreiben von Commits mit <command> (derzeit amend oder rebase), wenn diese Variable auf false gesetzt ist, kopiert Git keine Notizen vom Original auf den umgeschriebenen Commit. Standardmäßig true. Siehe auch notes.rewriteRef unten.

Diese Einstellung kann mit der Umgebungsvariable GIT_NOTES_REWRITE_REF überschrieben werden, die eine durch Doppelpunkte getrennte Liste von Refs oder Globs sein muss.

notes.rewriteMode

Beim Kopieren von Notizen während eines Rewrites (siehe notes.rewrite.<command>-Option) wird festgelegt, was zu tun ist, wenn der Ziel-Commit bereits eine Notiz hat. Muss einer der Werte overwrite, concatenate, cat_sort_uniq oder ignore sein. Standardmäßig concatenate.

Diese Einstellung kann mit der Umgebungsvariable GIT_NOTES_REWRITE_MODE überschrieben werden.

notes.rewriteRef

Beim Kopieren von Notizen während eines Rewrites wird der (vollqualifizierte) Ref angegeben, dessen Notizen kopiert werden sollen. Kann ein Glob sein, in diesem Fall werden Notizen aus allen passenden Refs kopiert. Sie können diese Konfiguration auch mehrmals angeben.

Hat keinen Standardwert; Sie müssen diese Variable konfigurieren, um Notizen-Rewriting zu aktivieren. Setzen Sie sie auf refs/notes/commits, um das Rewriting für die Standard-Commit-Notizen zu aktivieren.

Kann mit der Umgebungsvariable GIT_NOTES_REWRITE_REF überschrieben werden. Siehe notes.rewrite.<command> oben für eine weitere Beschreibung seines Formats.

UMGEBUNG

GIT_NOTES_REF

Welcher Ref zum Manipulieren von Notizen verwendet werden soll, anstelle von refs/notes/commits. Dies überschreibt die Einstellung core.notesRef.

GIT_NOTES_DISPLAY_REF

Durch Doppelpunkte getrennte Liste von Refs oder Globs, die angeben, welche Refs zusätzlich zu den Standardwerten aus core.notesRef oder GIT_NOTES_REF zum Lesen von Notizen verwendet werden sollen, wenn Commit-Nachrichten angezeigt werden. Dies überschreibt die Einstellung notes.displayRef.

Für nicht existierende Refs wird eine Warnung ausgegeben, ein Glob, der keine Refs findet, wird jedoch stillschweigend ignoriert.

GIT_NOTES_REWRITE_MODE

Beim Kopieren von Notizen während eines Rewrites, was zu tun ist, wenn der Ziel-Commit bereits eine Notiz hat. Muss einer der Werte overwrite, concatenate, cat_sort_uniq oder ignore sein. Dies überschreibt die Einstellung core.rewriteMode.

GIT_NOTES_REWRITE_REF

Beim Umschreiben von Commits, welche Notizen vom Original zum umgeschriebenen Commit kopiert werden sollen. Muss eine durch Doppelpunkte getrennte Liste von Refs oder Globs sein.

Wenn die Umgebungsvariable nicht gesetzt ist, hängt die Liste der zu kopierenden Notizen von den Einstellungen notes.rewrite.<command> und notes.rewriteRef ab.

GIT

Teil der git[1] Suite


1. Zulässige Pfadnamen haben die Form bf/fe/30/…​/680d5a…​: eine Abfolge von Verzeichnisnamen aus jeweils zwei Hexadezimalziffern, gefolgt von einem Dateinamen mit dem Rest der Objekt-ID.