Autogenerated manpages for v2.47.0-305-g4083a
[git-manpages.git] / man1 / git-notes.1
blob56d413007090171f2cd4fb972f612f3285514dbd
1 '\" t
2 .\"     Title: git-notes
3 .\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
4 .\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
5 .\"      Date: 2024-11-20
6 .\"    Manual: Git Manual
7 .\"    Source: Git 2.47.0.305.g4083a6f052
8 .\"  Language: English
9 .\"
10 .TH "GIT\-NOTES" "1" "2024-11-20" "Git 2\&.47\&.0\&.305\&.g4083a6" "Git Manual"
11 .\" -----------------------------------------------------------------
12 .\" * Define some portability stuff
13 .\" -----------------------------------------------------------------
14 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 .\" http://bugs.debian.org/507673
16 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
17 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 .ie \n(.g .ds Aq \(aq
19 .el       .ds Aq '
20 .\" -----------------------------------------------------------------
21 .\" * set default formatting
22 .\" -----------------------------------------------------------------
23 .\" disable hyphenation
24 .nh
25 .\" disable justification (adjust text to left margin only)
26 .ad l
27 .\" -----------------------------------------------------------------
28 .\" * MAIN CONTENT STARTS HERE *
29 .\" -----------------------------------------------------------------
30 .SH "NAME"
31 git-notes \- Add or inspect object notes
32 .SH "SYNOPSIS"
33 .sp
34 .nf
35 \fIgit notes\fR [list [<object>]]
36 \fIgit notes\fR add [\-f] [\-\-allow\-empty] [\-\-[no\-]separator | \-\-separator=<paragraph\-break>] [\-\-[no\-]stripspace] [\-F <file> | \-m <msg> | (\-c | \-C) <object>] [\-e] [<object>]
37 \fIgit notes\fR copy [\-f] ( \-\-stdin | <from\-object> [<to\-object>] )
38 \fIgit notes\fR append [\-\-allow\-empty] [\-\-[no\-]separator | \-\-separator=<paragraph\-break>] [\-\-[no\-]stripspace] [\-F <file> | \-m <msg> | (\-c | \-C) <object>] [\-e] [<object>]
39 \fIgit notes\fR edit [\-\-allow\-empty] [<object>] [\-\-[no\-]stripspace]
40 \fIgit notes\fR show [<object>]
41 \fIgit notes\fR merge [\-v | \-q] [\-s <strategy> ] <notes\-ref>
42 \fIgit notes\fR merge \-\-commit [\-v | \-q]
43 \fIgit notes\fR merge \-\-abort [\-v | \-q]
44 \fIgit notes\fR remove [\-\-ignore\-missing] [\-\-stdin] [<object>\&...\:]
45 \fIgit notes\fR prune [\-n] [\-v]
46 \fIgit notes\fR get\-ref
47 .fi
48 .SH "DESCRIPTION"
49 .sp
50 Adds, removes, or reads notes attached to objects, without touching the objects themselves\&.
51 .sp
52 By default, notes are saved to and read from \fBrefs/notes/commits\fR, but this default can be overridden\&. See the OPTIONS, CONFIGURATION, and ENVIRONMENT sections below\&. If this ref does not exist, it will be quietly created when it is first needed to store a note\&.
53 .sp
54 A typical use of notes is to supplement a commit message without changing the commit itself\&. Notes can be shown by \fIgit log\fR along with the original commit message\&. To distinguish these notes from the message stored in the commit object, the notes are indented like the message, after an unindented line saying "Notes (<refname>):" (or "Notes:" for \fBrefs/notes/commits\fR)\&.
55 .sp
56 Notes can also be added to patches prepared with \fBgit\fR \fBformat\-patch\fR by using the \fB\-\-notes\fR option\&. Such notes are added as a patch commentary after a three dash separator line\&.
57 .sp
58 To change which notes are shown by \fIgit log\fR, see the "notes\&.displayRef" discussion in the section called \(lqCONFIGURATION\(rq\&.
59 .sp
60 See the "notes\&.rewrite\&.<command>" configuration for a way to carry notes across commands that rewrite commits\&.
61 .SH "SUBCOMMANDS"
62 .PP
63 list
64 .RS 4
65 List the notes object for a given object\&. If no object is given, show a list of all note objects and the objects they annotate (in the format "<note\-object> <annotated\-object>")\&. This is the default subcommand if no subcommand is given\&.
66 .RE
67 .PP
68 add
69 .RS 4
70 Add notes for a given object (defaults to HEAD)\&. Abort if the object already has notes (use
71 \fB\-f\fR
72 to overwrite existing notes)\&. However, if you\(cqre using
73 \fBadd\fR
74 interactively (using an editor to supply the notes contents), then \- instead of aborting \- the existing notes will be opened in the editor (like the
75 \fBedit\fR
76 subcommand)\&. If you specify multiple
77 \fB\-m\fR
78 and
79 \fB\-F\fR, a blank line will be inserted between the messages\&. Use the
80 \fB\-\-separator\fR
81 option to insert other delimiters\&. You can use
82 \fB\-e\fR
83 to edit and fine\-tune the message(s) supplied from
84 \fB\-m\fR
85 and
86 \fB\-F\fR
87 options interactively (using an editor) before adding the note\&.
88 .RE
89 .PP
90 copy
91 .RS 4
92 Copy the notes for the first object onto the second object (defaults to HEAD)\&. Abort if the second object already has notes, or if the first object has none (use \-f to overwrite existing notes to the second object)\&. This subcommand is equivalent to:
93 \fBgit\fR
94 \fBnotes\fR
95 \fBadd\fR
96 [\fB\-f\fR]
97 \fB\-C\fR
98 \fB$\fR(\fBgit\fR
99 \fBnotes\fR
100 \fBlist\fR
101 \fI<from\-object>\fR)
102 \fI<to\-object>\fR
105 \fB\-\-stdin\fR
106 mode, take lines in the format
108 .if n \{\
109 .RS 4
112 <from\-object> SP <to\-object> [ SP <rest> ] LF
114 .if n \{\
118 on standard input, and copy the notes from each <from\-object> to its corresponding <to\-object>\&. (The optional
119 \fI<rest>\fR
120 is ignored so that the command can read the input given to the
121 \fBpost\-rewrite\fR
122 hook\&.)
125 append
126 .RS 4
127 Append new message(s) given by
128 \fB\-m\fR
130 \fB\-F\fR
131 options to an existing note, or add them as a new note if one does not exist, for the object (defaults to HEAD)\&. When appending to an existing note, a blank line is added before each new message as an inter\-paragraph separator\&. The separator can be customized with the
132 \fB\-\-separator\fR
133 option\&. Edit the notes to be appended given by
134 \fB\-m\fR
136 \fB\-F\fR
137 options with
138 \fB\-e\fR
139 interactively (using an editor) before appending the note\&.
142 edit
143 .RS 4
144 Edit the notes for a given object (defaults to HEAD)\&.
147 show
148 .RS 4
149 Show the notes for a given object (defaults to HEAD)\&.
152 merge
153 .RS 4
154 Merge the given notes ref into the current notes ref\&. This will try to merge the changes made by the given notes ref (called "remote") since the merge\-base (if any) into the current notes ref (called "local")\&.
156 If conflicts arise and a strategy for automatically resolving conflicting notes (see the "NOTES MERGE STRATEGIES" section) is not given, the "manual" resolver is used\&. This resolver checks out the conflicting notes in a special worktree (\&.\fBgit/NOTES_MERGE_WORKTREE\fR), and instructs the user to manually resolve the conflicts there\&. When done, the user can either finalize the merge with
157 \fIgit notes merge \-\-commit\fR, or abort the merge with
158 \fIgit notes merge \-\-abort\fR\&.
161 remove
162 .RS 4
163 Remove the notes for given objects (defaults to HEAD)\&. When giving zero or one object from the command line, this is equivalent to specifying an empty note message to the
164 \fBedit\fR
165 subcommand\&.
168 prune
169 .RS 4
170 Remove all notes for non\-existing/unreachable objects\&.
173 get\-ref
174 .RS 4
175 Print the current notes ref\&. This provides an easy way to retrieve the current notes ref (e\&.g\&. from scripts)\&.
177 .SH "OPTIONS"
179 \-f, \-\-force
180 .RS 4
181 When adding notes to an object that already has notes, overwrite the existing notes (instead of aborting)\&.
184 \-m <msg>, \-\-message=<msg>
185 .RS 4
186 Use the given note message (instead of prompting)\&. If multiple
187 \fB\-m\fR
188 options are given, their values are concatenated as separate paragraphs\&. Lines starting with # and empty lines other than a single line between paragraphs will be stripped out\&. If you wish to keep them verbatim, use
189 \fB\-\-no\-stripspace\fR\&.
192 \-F <file>, \-\-file=<file>
193 .RS 4
194 Take the note message from the given file\&. Use
195 \fI\-\fR
196 to read the note message from the standard input\&. Lines starting with # and empty lines other than a single line between paragraphs will be stripped out\&. If you wish to keep them verbatim, use
197 \fB\-\-no\-stripspace\fR\&.
200 \-C <object>, \-\-reuse\-message=<object>
201 .RS 4
202 Take the given blob object (for example, another note) as the note message\&. (Use
203 \fBgit\fR
204 \fBnotes\fR
205 \fBcopy\fR
206 \fI<object>\fR
207 instead to copy notes between objects\&.)\&. By default, message will be copied verbatim, but if you wish to strip out the lines starting with # and empty lines other than a single line between paragraphs, use with`\-\-stripspace` option\&.
210 \-c <object>, \-\-reedit\-message=<object>
211 .RS 4
212 Like
213 \fI\-C\fR, but with
214 \fB\-c\fR
215 the editor is invoked, so that the user can further edit the note message\&.
218 \-\-allow\-empty
219 .RS 4
220 Allow an empty note object to be stored\&. The default behavior is to automatically remove empty notes\&.
223 \-\-[no\-]separator, \-\-separator=<paragraph\-break>
224 .RS 4
225 Specify a string used as a custom inter\-paragraph separator (a newline is added at the end as needed)\&. If
226 \fB\-\-no\-separator\fR, no separators will be added between paragraphs\&. Defaults to a blank line\&.
229 \-\-[no\-]stripspace
230 .RS 4
231 Strip leading and trailing whitespace from the note message\&. Also strip out empty lines other than a single line between paragraphs\&. Lines starting with # will be stripped out in non\-editor cases like
232 \fB\-m\fR,
233 \fB\-F\fR
235 \fB\-C\fR, but not in editor case like
236 \fBgit\fR
237 \fBnotes\fR
238 \fBedit\fR,
239 \fB\-c\fR, etc\&.
242 \-\-ref <ref>
243 .RS 4
244 Manipulate the notes tree in <ref>\&. This overrides
245 \fBGIT_NOTES_REF\fR
246 and the "core\&.notesRef" configuration\&. The ref specifies the full refname when it begins with
247 \fBrefs/notes/\fR; when it begins with
248 \fBnotes/\fR,
249 \fBrefs/\fR
250 and otherwise
251 \fBrefs/notes/\fR
252 is prefixed to form a full name of the ref\&.
255 \-\-ignore\-missing
256 .RS 4
257 Do not consider it an error to request removing notes from an object that does not have notes attached to it\&.
260 \-\-stdin
261 .RS 4
262 Also read the object names to remove notes from the standard input (there is no reason you cannot combine this with object names from the command line)\&.
265 \-n, \-\-dry\-run
266 .RS 4
267 Do not remove anything; just report the object names whose notes would be removed\&.
270 \-s <strategy>, \-\-strategy=<strategy>
271 .RS 4
272 When merging notes, resolve notes conflicts using the given strategy\&. The following strategies are recognized: "manual" (default), "ours", "theirs", "union" and "cat_sort_uniq"\&. This option overrides the "notes\&.mergeStrategy" configuration setting\&. See the "NOTES MERGE STRATEGIES" section below for more information on each notes merge strategy\&.
275 \-\-commit
276 .RS 4
277 Finalize an in\-progress
278 \fIgit notes merge\fR\&. Use this option when you have resolved the conflicts that
279 \fIgit notes merge\fR
280 stored in \&.git/NOTES_MERGE_WORKTREE\&. This amends the partial merge commit created by
281 \fIgit notes merge\fR
282 (stored in \&.git/NOTES_MERGE_PARTIAL) by adding the notes in \&.git/NOTES_MERGE_WORKTREE\&. The notes ref stored in the \&.git/NOTES_MERGE_REF symref is updated to the resulting commit\&.
285 \-\-abort
286 .RS 4
287 Abort/reset an in\-progress
288 \fIgit notes merge\fR, i\&.e\&. a notes merge with conflicts\&. This simply removes all files related to the notes merge\&.
291 \-q, \-\-quiet
292 .RS 4
293 When merging notes, operate quietly\&.
296 \-v, \-\-verbose
297 .RS 4
298 When merging notes, be more verbose\&. When pruning notes, report all object names whose notes are removed\&.
300 .SH "DISCUSSION"
302 Commit notes are blobs containing extra information about an object (usually information to supplement a commit\(cqs message)\&. These blobs are taken from notes refs\&. A notes ref is usually a branch which contains "files" whose paths are the object names for the objects they describe, with some directory separators included for performance reasons \&\s-2\u[1]\d\s+2\&.
304 Every notes change creates a new commit at the specified notes ref\&. You can therefore inspect the history of the notes by invoking, e\&.g\&., \fBgit\fR \fBlog\fR \fB\-p\fR \fBnotes/commits\fR\&. Currently the commit message only records which operation triggered the update, and the commit authorship is determined according to the usual rules (see \fBgit-commit\fR(1))\&. These details may change in the future\&.
306 It is also permitted for a notes ref to point directly to a tree object, in which case the history of the notes can be read with \fBgit\fR \fBlog\fR \fB\-p\fR \fB\-g\fR \fI<refname>\fR\&.
307 .SH "NOTES MERGE STRATEGIES"
309 The default notes merge strategy is "manual", which checks out conflicting notes in a special work tree for resolving notes conflicts (\&.\fBgit/NOTES_MERGE_WORKTREE\fR), and instructs the user to resolve the conflicts in that work tree\&. When done, the user can either finalize the merge with \fIgit notes merge \-\-commit\fR, or abort the merge with \fIgit notes merge \-\-abort\fR\&.
311 Users may select an automated merge strategy from among the following using either \-s/\-\-strategy option or configuring notes\&.mergeStrategy accordingly:
313 "ours" automatically resolves conflicting notes in favor of the local version (i\&.e\&. the current notes ref)\&.
315 "theirs" automatically resolves notes conflicts in favor of the remote version (i\&.e\&. the given notes ref being merged into the current notes ref)\&.
317 "union" automatically resolves notes conflicts by concatenating the local and remote versions\&.
319 "cat_sort_uniq" is similar to "union", but in addition to concatenating the local and remote versions, this strategy also sorts the resulting lines, and removes duplicate lines from the result\&. This is equivalent to applying the "cat | sort | uniq" shell pipeline to the local and remote versions\&. This strategy is useful if the notes follow a line\-based format where one wants to avoid duplicated lines in the merge result\&. Note that if either the local or remote version contain duplicate lines prior to the merge, these will also be removed by this notes merge strategy\&.
320 .SH "EXAMPLES"
322 You can use notes to add annotations with information that was not available at the time a commit was written\&.
324 .if n \{\
325 .RS 4
328 $ git notes add \-m \*(AqTested\-by: Johannes Sixt <j6t@kdbg\&.org>\*(Aq 72a144e2
329 $ git show \-s 72a144e
330 [\&.\&.\&.]
331     Signed\-off\-by: Junio C Hamano <gitster@pobox\&.com>
333 Notes:
334     Tested\-by: Johannes Sixt <j6t@kdbg\&.org>
336 .if n \{\
340 In principle, a note is a regular Git blob, and any kind of (non\-)format is accepted\&. You can binary\-safely create notes from arbitrary files using \fIgit hash\-object\fR:
342 .if n \{\
343 .RS 4
346 $ cc *\&.c
347 $ blob=$(git hash\-object \-w a\&.out)
348 $ git notes \-\-ref=built add \-\-allow\-empty \-C "$blob" HEAD
350 .if n \{\
354 (You cannot simply use \fBgit\fR \fBnotes\fR \fB\-\-ref=built\fR \fBadd\fR \fB\-F\fR \fBa\&.out\fR \fBHEAD\fR because that is not binary\-safe\&.) Of course, it doesn\(cqt make much sense to display non\-text\-format notes with \fIgit log\fR, so if you use such notes, you\(cqll probably need to write some special\-purpose tools to do something useful with them\&.
355 .SH "CONFIGURATION"
357 core\&.notesRef
358 .RS 4
359 Notes ref to read and manipulate instead of
360 \fBrefs/notes/commits\fR\&. Must be an unabbreviated ref name\&. This setting can be overridden through the environment and command line\&.
363 Everything above this line in this section isn\(cqt included from the \fBgit-config\fR(1) documentation\&. The content that follows is the same as what\(cqs found there:
365 notes\&.mergeStrategy
366 .RS 4
367 Which merge strategy to choose by default when resolving notes conflicts\&. Must be one of
368 \fBmanual\fR,
369 \fBours\fR,
370 \fBtheirs\fR,
371 \fBunion\fR, or
372 \fBcat_sort_uniq\fR\&. Defaults to
373 \fBmanual\fR\&. See the "NOTES MERGE STRATEGIES" section of
374 \fBgit-notes\fR(1)
375 for more information on each strategy\&.
377 This setting can be overridden by passing the
378 \fB\-\-strategy\fR
379 option to
380 \fBgit-notes\fR(1)\&.
383 notes\&.<name>\&.mergeStrategy
384 .RS 4
385 Which merge strategy to choose when doing a notes merge into refs/notes/<name>\&. This overrides the more general "notes\&.mergeStrategy"\&. See the "NOTES MERGE STRATEGIES" section in
386 \fBgit-notes\fR(1)
387 for more information on the available strategies\&.
390 notes\&.displayRef
391 .RS 4
392 Which ref (or refs, if a glob or specified more than once), in addition to the default set by
393 \fBcore\&.notesRef\fR
395 \fBGIT_NOTES_REF\fR, to read notes from when showing commit messages with the
396 \fIgit log\fR
397 family of commands\&.
399 This setting can be overridden with the
400 \fBGIT_NOTES_DISPLAY_REF\fR
401 environment variable, which must be a colon separated list of refs or globs\&.
403 A warning will be issued for refs that do not exist, but a glob that does not match any refs is silently ignored\&.
405 This setting can be disabled by the
406 \fB\-\-no\-notes\fR
407 option to the
408 \fIgit log\fR
409 family of commands, or by the
410 \fB\-\-notes=\fR\fI<ref>\fR
411 option accepted by those commands\&.
413 The effective value of "core\&.notesRef" (possibly overridden by GIT_NOTES_REF) is also implicitly added to the list of refs to be displayed\&.
416 notes\&.rewrite\&.<command>
417 .RS 4
418 When rewriting commits with <command> (currently
419 \fBamend\fR
421 \fBrebase\fR), if this variable is
422 \fBfalse\fR, git will not copy notes from the original to the rewritten commit\&. Defaults to
423 \fBtrue\fR\&. See also "\fBnotes\&.rewriteRef\fR" below\&.
425 This setting can be overridden with the
426 \fBGIT_NOTES_REWRITE_REF\fR
427 environment variable, which must be a colon separated list of refs or globs\&.
430 notes\&.rewriteMode
431 .RS 4
432 When copying notes during a rewrite (see the "notes\&.rewrite\&.<command>" option), determines what to do if the target commit already has a note\&. Must be one of
433 \fBoverwrite\fR,
434 \fBconcatenate\fR,
435 \fBcat_sort_uniq\fR, or
436 \fBignore\fR\&. Defaults to
437 \fBconcatenate\fR\&.
439 This setting can be overridden with the
440 \fBGIT_NOTES_REWRITE_MODE\fR
441 environment variable\&.
444 notes\&.rewriteRef
445 .RS 4
446 When copying notes during a rewrite, specifies the (fully qualified) ref whose notes should be copied\&. May be a glob, in which case notes in all matching refs will be copied\&. You may also specify this configuration several times\&.
448 Does not have a default value; you must configure this variable to enable note rewriting\&. Set it to
449 \fBrefs/notes/commits\fR
450 to enable rewriting for the default commit notes\&.
452 Can be overridden with the
453 \fBGIT_NOTES_REWRITE_REF\fR
454 environment variable\&. See
455 \fBnotes\&.rewrite\&.\fR\fI<command>\fR
456 above for a further description of its format\&.
458 .SH "ENVIRONMENT"
460 \fBGIT_NOTES_REF\fR
461 .RS 4
462 Which ref to manipulate notes from, instead of
463 \fBrefs/notes/commits\fR\&. This overrides the
464 \fBcore\&.notesRef\fR
465 setting\&.
468 \fBGIT_NOTES_DISPLAY_REF\fR
469 .RS 4
470 Colon\-delimited list of refs or globs indicating which refs, in addition to the default from
471 \fBcore\&.notesRef\fR
473 \fBGIT_NOTES_REF\fR, to read notes from when showing commit messages\&. This overrides the
474 \fBnotes\&.displayRef\fR
475 setting\&.
477 A warning will be issued for refs that do not exist, but a glob that does not match any refs is silently ignored\&.
480 \fBGIT_NOTES_REWRITE_MODE\fR
481 .RS 4
482 When copying notes during a rewrite, what to do if the target commit already has a note\&. Must be one of
483 \fBoverwrite\fR,
484 \fBconcatenate\fR,
485 \fBcat_sort_uniq\fR, or
486 \fBignore\fR\&. This overrides the
487 \fBcore\&.rewriteMode\fR
488 setting\&.
491 \fBGIT_NOTES_REWRITE_REF\fR
492 .RS 4
493 When rewriting commits, which notes to copy from the original to the rewritten commit\&. Must be a colon\-delimited list of refs or globs\&.
495 If not set in the environment, the list of notes to copy depends on the
496 \fBnotes\&.rewrite\&.\fR\fI<command>\fR
498 \fBnotes\&.rewriteRef\fR
499 settings\&.
501 .SH "GIT"
503 Part of the \fBgit\fR(1) suite
504 .SH "NOTES"
505 .IP " 1." 4
506 Permitted pathnames have the form \fIbf\fR\fB/\fR\fIfe\fR\fB/\fR\fI30\fR\fB/\fR\fI\&...\:\fR\fB/\fR\fI680d5a\&...\:\fR: a sequence of directory names of two hexadecimal digits each followed by a filename with the rest of the object ID.