Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
- 2.50.1 → 2.52.0 keine Änderungen
-
2.50.0
2025-06-16
- 2.49.1 keine Änderungen
-
2.49.0
2025-03-14
- 2.48.1 → 2.48.2 keine Änderungen
-
2.48.0
2025-01-10
- 2.44.1 → 2.47.3 keine Änderungen
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 keine Änderungen
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 keine Änderungen
-
2.42.0
2023-08-21
- 2.38.1 → 2.41.3 keine Änderungen
-
2.38.0
2022-10-02
- 2.29.1 → 2.37.7 keine Änderungen
-
2.29.0
2020-10-19
- 2.25.1 → 2.28.1 keine Änderungen
-
2.25.0
2020-01-13
- 2.22.1 → 2.24.4 keine Änderungen
-
2.22.0
2019-06-07
- 2.19.1 → 2.21.4 keine Änderungen
-
2.19.0
2018-09-10
- 2.17.0 → 2.18.5 keine Änderungen
-
2.16.6
2019-12-06
- 2.15.4 keine Änderungen
-
2.14.6
2019-12-06
- 2.10.5 → 2.13.7 keine Änderungen
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 keine Änderungen
-
2.6.7
2017-05-05
- 2.4.12 → 2.5.6 keine Änderungen
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
gitnotes[list[<object>]]gitnotesadd[-f] [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-F<file> |-m<msg> | (-c|-C) <object>] [-e] [<object>]gitnotescopy[-f] (--stdin| <from-object> [<to-object>] )gitnotesappend[--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-F<file> |-m<msg> | (-c|-C) <object>] [-e] [<object>]gitnotesedit[--allow-empty] [<object>] [--[no-]stripspace]gitnotesshow[<object>]gitnotesmerge[-v|-q] [-s<strategy> ] <notes-ref>gitnotesmerge--commit[-v|-q]gitnotesmerge--abort[-v|-q]gitnotesremove[--ignore-missing] [--stdin] [<object>…]gitnotesprune[-n] [-v]gitnotesget-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 jedochaddinteraktiv verwenden (mit einem Editor zur Angabe des Inhalts der Notizen), werden die vorhandenen Notizen stattdessen im Editor geöffnet (wie beim Unterbefehledit). Wenn Sie mehrere-mund-Fangeben, wird eine Leerzeile zwischen den Nachrichten eingefügt. Verwenden Sie die Option--separator, um andere Trennzeichen einzufügen. Sie können-everwenden, um die von den Optionen-mund-Fbereitgestellten 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:gitnotesadd[-f]-C$(gitnoteslist<from-object>) <to-object>Im Modus
--stdinwerden 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-rewriteHooks lesen kann.)--stdinkann nicht mit Objektnamen kombiniert werden, die auf der Kommandozeile angegeben sind. append-
Hängt neue Nachrichten, die über die Optionen
-moder-Fbereitgestellt werden, an eine vorhandene Notiz an oder fügt sie als neue Notiz hinzu, wenn keine vorhanden ist, für das Objekt (standardmäßigHEAD). Beim Anhängen an eine vorhandene Notiz wird vor jeder neuen Nachricht eine Leerzeile als Absatztrenner eingefügt. Der Trenner kann mit der Option--separatorangepasst werden. Bearbeiten Sie die anzuhängenden Notizen, die über die Optionen-mund-Fbereitgestellt werden, mit-einteraktiv (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 mitgitnotesmerge--commitabschließen oder den Merge mitgitnotesmerge--abortabbrechen. 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 Unterbefehledit.Im Modus
--stdinwerden auch die auf der Standardeingabe angegebenen Objektnamen entfernt. Mit anderen Worten,--stdinkann 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
gitnotescopy<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-cwird 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-separatorangegeben 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.
--stripspaceist 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>--stripspaceverwendet, da der Standard für-mdas 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_REFund die Konfigurationcore.notesRef. Der Ref gibt den vollständigen Refnamen an, wenn er mitrefs/notes/beginnt; wenn er mitnotes/beginnt, wirdrefs/und ansonstenrefs/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
removeundcopy. 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,unionundcat_sort_uniq. Diese Option überschreibt die Konfigurationseinstellungnotes.mergeStrategy. Weitere Informationen zu jeder Notizen-Merge-Strategie finden Sie im Abschnitt "NOTIZEN-MERGE-STRATEGIEN" unten. --commit-
Schließt einen laufenden
gitnotesmerge-Vorgang ab. Verwenden Sie diese Option, wenn Sie die durchgitnotesmergein.git/NOTES_MERGE_WORKTREEgespeicherten Konflikte gelöst haben. Dies ändert den teilweisen Merge-Commit, der vongitnotesmergeerstellt wurde (gespeichert in.git/NOTES_MERGE_PARTIAL), indem die Notizen in.git/NOTES_MERGE_WORKTREEhinzugefügt werden. Der in.git/NOTES_MERGE_REFgespeicherte Notizen-Ref wird zum resultierenden Commit aktualisiert. --abort-
Bricht/setzt einen laufenden
gitnotesmerge-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
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,unionodercat_sort_uniqsein. Standardmäßigmanual. Siehe den Abschnitt "NOTES MERGE STRATEGIES" in git-notes[1] für weitere Informationen zu jeder Strategie.Diese Einstellung kann durch Übergabe der Option
--strategyan 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 Einstellungnotes.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.notesRefoderGIT_NOTES_REFstandardmäßig festgelegten Ref, aus dem Notizen gelesen werden sollen, wenn Commit-Nachrichten mit dergitlog-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-notesfür diegitlog-Befehlsfamilie oder durch die Option--notes=<ref>, die von diesen Befehlen akzeptiert wird, deaktiviert werden.Der effektive Wert von
core.notesRef(möglicherweise überschrieben durchGIT_NOTES_REF) wird ebenfalls implizit zur Liste der anzuzeigenden Refs hinzugefügt. notes.rewrite.<command>-
Beim Umschreiben von Commits mit <command> (derzeit
amendoderrebase), wenn diese Variable auffalsegesetzt ist, kopiert Git keine Notizen vom Original auf den umgeschriebenen Commit. Standardmäßigtrue. Siehe auchnotes.rewriteRefunten.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 Werteoverwrite,concatenate,cat_sort_uniqoderignoresein. Standardmäßigconcatenate.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. Siehenotes.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 Einstellungcore.notesRef. GIT_NOTES_DISPLAY_REF-
Durch Doppelpunkte getrennte Liste von Refs oder Globs, die angeben, welche Refs zusätzlich zu den Standardwerten aus
core.notesRefoderGIT_NOTES_REFzum Lesen von Notizen verwendet werden sollen, wenn Commit-Nachrichten angezeigt werden. Dies überschreibt die Einstellungnotes.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_uniqoderignoresein. Dies überschreibt die Einstellungcore.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> undnotes.rewriteRefab.
GIT
Teil der git[1] Suite
/fe/30/…/680d5a…: eine Abfolge von Verzeichnisnamen aus jeweils zwei Hexadezimalziffern, gefolgt von einem Dateinamen mit dem Rest der Objekt-ID.