Doc update. * rd/doc-notes-prune-fix: notes: correct 'git notes prune' options to '[-n] [-v]'
		
			
				
	
	
		
			406 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			406 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
git-notes(1)
 | 
						|
============
 | 
						|
 | 
						|
NAME
 | 
						|
----
 | 
						|
git-notes - Add or inspect object notes
 | 
						|
 | 
						|
SYNOPSIS
 | 
						|
--------
 | 
						|
[verse]
 | 
						|
'git notes' [list [<object>]]
 | 
						|
'git notes' add [-f] [--allow-empty] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
 | 
						|
'git notes' copy [-f] ( --stdin | <from-object> <to-object> )
 | 
						|
'git notes' append [--allow-empty] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
 | 
						|
'git notes' edit [--allow-empty] [<object>]
 | 
						|
'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
 | 
						|
 | 
						|
 | 
						|
DESCRIPTION
 | 
						|
-----------
 | 
						|
Adds, removes, or reads notes attached to objects, without touching
 | 
						|
the objects themselves.
 | 
						|
 | 
						|
By default, notes are saved to and read from `refs/notes/commits`, 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.
 | 
						|
 | 
						|
A typical use of notes is to supplement a commit message without
 | 
						|
changing the commit itself. Notes can be shown by 'git log' 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 `refs/notes/commits`).
 | 
						|
 | 
						|
Notes can also be added to patches prepared with `git format-patch` by
 | 
						|
using the `--notes` option. Such notes are added as a patch commentary
 | 
						|
after a three dash separator line.
 | 
						|
 | 
						|
To change which notes are shown by 'git log', see the
 | 
						|
"notes.displayRef" configuration in linkgit:git-log[1].
 | 
						|
 | 
						|
See the "notes.rewrite.<command>" configuration for a way to carry
 | 
						|
notes across commands that rewrite commits.
 | 
						|
 | 
						|
 | 
						|
SUBCOMMANDS
 | 
						|
-----------
 | 
						|
 | 
						|
list::
 | 
						|
	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.
 | 
						|
 | 
						|
add::
 | 
						|
	Add notes for a given object (defaults to HEAD). Abort if the
 | 
						|
	object already has notes (use `-f` to overwrite existing notes).
 | 
						|
	However, if you're using `add` interactively (using an editor
 | 
						|
	to supply the notes contents), then - instead of aborting -
 | 
						|
	the existing notes will be opened in the editor (like the `edit`
 | 
						|
	subcommand).
 | 
						|
 | 
						|
copy::
 | 
						|
	Copy the notes for the first object onto the second object.
 | 
						|
	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:
 | 
						|
	`git notes add [-f] -C $(git notes list <from-object>) <to-object>`
 | 
						|
+
 | 
						|
In `--stdin` mode, take lines in the format
 | 
						|
+
 | 
						|
----------
 | 
						|
<from-object> SP <to-object> [ SP <rest> ] LF
 | 
						|
----------
 | 
						|
+
 | 
						|
on standard input, and copy the notes from each <from-object> to its
 | 
						|
corresponding <to-object>.  (The optional `<rest>` is ignored so that
 | 
						|
the command can read the input given to the `post-rewrite` hook.)
 | 
						|
 | 
						|
append::
 | 
						|
	Append to the notes of an existing object (defaults to HEAD).
 | 
						|
	Creates a new notes object if needed.
 | 
						|
 | 
						|
edit::
 | 
						|
	Edit the notes for a given object (defaults to HEAD).
 | 
						|
 | 
						|
show::
 | 
						|
	Show the notes for a given object (defaults to HEAD).
 | 
						|
 | 
						|
merge::
 | 
						|
	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").
 | 
						|
+
 | 
						|
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 (`.git/NOTES_MERGE_WORKTREE`),
 | 
						|
and instructs the user to manually resolve the conflicts there.
 | 
						|
When done, the user can either finalize the merge with
 | 
						|
'git notes merge --commit', or abort the merge with
 | 
						|
'git notes merge --abort'.
 | 
						|
 | 
						|
remove::
 | 
						|
	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 `edit` subcommand.
 | 
						|
 | 
						|
prune::
 | 
						|
	Remove all notes for non-existing/unreachable objects.
 | 
						|
 | 
						|
get-ref::
 | 
						|
	Print the current notes ref. This provides an easy way to
 | 
						|
	retrieve the current notes ref (e.g. from scripts).
 | 
						|
 | 
						|
OPTIONS
 | 
						|
-------
 | 
						|
-f::
 | 
						|
--force::
 | 
						|
	When adding notes to an object that already has notes,
 | 
						|
	overwrite the existing notes (instead of aborting).
 | 
						|
 | 
						|
-m <msg>::
 | 
						|
--message=<msg>::
 | 
						|
	Use the given note message (instead of prompting).
 | 
						|
	If multiple `-m` 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.
 | 
						|
 | 
						|
-F <file>::
 | 
						|
--file=<file>::
 | 
						|
	Take the note message from the given file.  Use '-' 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.
 | 
						|
 | 
						|
-C <object>::
 | 
						|
--reuse-message=<object>::
 | 
						|
	Take the given blob object (for	example, another note) as the
 | 
						|
	note message. (Use `git notes copy <object>` instead to
 | 
						|
	copy notes between objects.)
 | 
						|
 | 
						|
-c <object>::
 | 
						|
--reedit-message=<object>::
 | 
						|
	Like '-C', but with `-c` the editor is invoked, so that
 | 
						|
	the user can further edit the note message.
 | 
						|
 | 
						|
--allow-empty::
 | 
						|
	Allow an empty note object to be stored. The default behavior is
 | 
						|
	to automatically remove empty notes.
 | 
						|
 | 
						|
--ref <ref>::
 | 
						|
	Manipulate the notes tree in <ref>.  This overrides
 | 
						|
	`GIT_NOTES_REF` and the "core.notesRef" configuration.  The ref
 | 
						|
	specifies the full refname when it begins with `refs/notes/`; when it
 | 
						|
	begins with `notes/`, `refs/` and otherwise `refs/notes/` is prefixed
 | 
						|
	to form a full name of the ref.
 | 
						|
 | 
						|
--ignore-missing::
 | 
						|
	Do not consider it an error to request removing notes from an
 | 
						|
	object that does not have notes attached to it.
 | 
						|
 | 
						|
--stdin::
 | 
						|
	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).
 | 
						|
 | 
						|
-n::
 | 
						|
--dry-run::
 | 
						|
	Do not remove anything; just report the object names whose notes
 | 
						|
	would be removed.
 | 
						|
 | 
						|
-s <strategy>::
 | 
						|
--strategy=<strategy>::
 | 
						|
	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.
 | 
						|
 | 
						|
--commit::
 | 
						|
	Finalize an in-progress 'git notes merge'. Use this option
 | 
						|
	when you have resolved the conflicts that 'git notes merge'
 | 
						|
	stored in .git/NOTES_MERGE_WORKTREE. This amends the partial
 | 
						|
	merge commit created by 'git notes merge' (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.
 | 
						|
 | 
						|
--abort::
 | 
						|
	Abort/reset a in-progress 'git notes merge', i.e. a notes merge
 | 
						|
	with conflicts. This simply removes all files related to the
 | 
						|
	notes merge.
 | 
						|
 | 
						|
-q::
 | 
						|
--quiet::
 | 
						|
	When merging notes, operate quietly.
 | 
						|
 | 
						|
-v::
 | 
						|
--verbose::
 | 
						|
	When merging notes, be more verbose.
 | 
						|
	When pruning notes, report all object names whose notes are
 | 
						|
	removed.
 | 
						|
 | 
						|
 | 
						|
DISCUSSION
 | 
						|
----------
 | 
						|
 | 
						|
Commit notes are blobs containing extra information about an object
 | 
						|
(usually information to supplement a commit's 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 footnote:[Permitted pathnames have the form
 | 
						|
'ab'`/`'cd'`/`'ef'`/`'...'`/`'abcdef...': a sequence of directory
 | 
						|
names of two hexadecimal digits each followed by a filename with the
 | 
						|
rest of the object ID.].
 | 
						|
 | 
						|
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.,
 | 
						|
`git log -p notes/commits`.  Currently the commit message only records
 | 
						|
which operation triggered the update, and the commit authorship is
 | 
						|
determined according to the usual rules (see linkgit:git-commit[1]).
 | 
						|
These details may change in the future.
 | 
						|
 | 
						|
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
 | 
						|
`git log -p -g <refname>`.
 | 
						|
 | 
						|
 | 
						|
NOTES MERGE STRATEGIES
 | 
						|
----------------------
 | 
						|
 | 
						|
The default notes merge strategy is "manual", which checks out
 | 
						|
conflicting notes in a special work tree for resolving notes conflicts
 | 
						|
(`.git/NOTES_MERGE_WORKTREE`), and instructs the user to resolve the
 | 
						|
conflicts in that work tree.
 | 
						|
When done, the user can either finalize the merge with
 | 
						|
'git notes merge --commit', or abort the merge with
 | 
						|
'git notes merge --abort'.
 | 
						|
 | 
						|
Users may select an automated merge strategy from among the following using
 | 
						|
either -s/--strategy option or configuring notes.mergeStrategy accordingly:
 | 
						|
 | 
						|
"ours" automatically resolves conflicting notes in favor of the local
 | 
						|
version (i.e. the current notes ref).
 | 
						|
 | 
						|
"theirs" automatically resolves notes conflicts in favor of the remote
 | 
						|
version (i.e. the given notes ref being merged into the current notes
 | 
						|
ref).
 | 
						|
 | 
						|
"union" automatically resolves notes conflicts by concatenating the
 | 
						|
local and remote versions.
 | 
						|
 | 
						|
"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.
 | 
						|
 | 
						|
 | 
						|
EXAMPLES
 | 
						|
--------
 | 
						|
 | 
						|
You can use notes to add annotations with information that was not
 | 
						|
available at the time a commit was written.
 | 
						|
 | 
						|
------------
 | 
						|
$ 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>
 | 
						|
------------
 | 
						|
 | 
						|
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 'git hash-object':
 | 
						|
 | 
						|
------------
 | 
						|
$ cc *.c
 | 
						|
$ blob=$(git hash-object -w a.out)
 | 
						|
$ git notes --ref=built add --allow-empty -C "$blob" HEAD
 | 
						|
------------
 | 
						|
 | 
						|
(You cannot simply use `git notes --ref=built add -F a.out HEAD`
 | 
						|
because that is not binary-safe.)
 | 
						|
Of course, it doesn't make much sense to display non-text-format notes
 | 
						|
with 'git log', so if you use such notes, you'll probably need to write
 | 
						|
some special-purpose tools to do something useful with them.
 | 
						|
 | 
						|
 | 
						|
CONFIGURATION
 | 
						|
-------------
 | 
						|
 | 
						|
core.notesRef::
 | 
						|
	Notes ref to read and manipulate instead of
 | 
						|
	`refs/notes/commits`.  Must be an unabbreviated ref name.
 | 
						|
	This setting can be overridden through the environment and
 | 
						|
	command line.
 | 
						|
 | 
						|
notes.mergeStrategy::
 | 
						|
	Which merge strategy to choose by default when resolving notes
 | 
						|
	conflicts.  Must be one of `manual`, `ours`, `theirs`, `union`, or
 | 
						|
	`cat_sort_uniq`.  Defaults to `manual`.  See "NOTES MERGE STRATEGIES"
 | 
						|
	section above for more information on each strategy.
 | 
						|
+
 | 
						|
This setting can be overridden by passing the `--strategy` option.
 | 
						|
 | 
						|
notes.<name>.mergeStrategy::
 | 
						|
	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 above
 | 
						|
	for more information on each available strategy.
 | 
						|
 | 
						|
notes.displayRef::
 | 
						|
	Which ref (or refs, if a glob or specified more than once), in
 | 
						|
	addition to the default set by `core.notesRef` or
 | 
						|
	`GIT_NOTES_REF`, to read notes from when showing commit
 | 
						|
	messages with the 'git log' family of commands.
 | 
						|
	This setting can be overridden on the command line or by the
 | 
						|
	`GIT_NOTES_DISPLAY_REF` environment variable.
 | 
						|
	See linkgit:git-log[1].
 | 
						|
 | 
						|
notes.rewrite.<command>::
 | 
						|
	When rewriting commits with <command> (currently `amend` or
 | 
						|
	`rebase`), if this variable is `false`, git will not copy
 | 
						|
	notes from the original to the rewritten commit.  Defaults to
 | 
						|
	`true`.  See also "`notes.rewriteRef`" below.
 | 
						|
+
 | 
						|
This setting can be overridden by the `GIT_NOTES_REWRITE_REF`
 | 
						|
environment variable.
 | 
						|
 | 
						|
notes.rewriteMode::
 | 
						|
	When copying notes during a rewrite, what to do if the target
 | 
						|
	commit already has a note.  Must be one of `overwrite`,
 | 
						|
	`concatenate`, `cat_sort_uniq`, or `ignore`.  Defaults to
 | 
						|
	`concatenate`.
 | 
						|
+
 | 
						|
This setting can be overridden with the `GIT_NOTES_REWRITE_MODE`
 | 
						|
environment variable.
 | 
						|
 | 
						|
notes.rewriteRef::
 | 
						|
	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.
 | 
						|
+
 | 
						|
Does not have a default value; you must configure this variable to
 | 
						|
enable note rewriting.
 | 
						|
+
 | 
						|
Can be overridden with the `GIT_NOTES_REWRITE_REF` environment variable.
 | 
						|
 | 
						|
 | 
						|
ENVIRONMENT
 | 
						|
-----------
 | 
						|
 | 
						|
`GIT_NOTES_REF`::
 | 
						|
	Which ref to manipulate notes from, instead of `refs/notes/commits`.
 | 
						|
	This overrides the `core.notesRef` setting.
 | 
						|
 | 
						|
`GIT_NOTES_DISPLAY_REF`::
 | 
						|
	Colon-delimited list of refs or globs indicating which refs,
 | 
						|
	in addition to the default from `core.notesRef` or
 | 
						|
	`GIT_NOTES_REF`, to read notes from when showing commit
 | 
						|
	messages.
 | 
						|
	This overrides the `notes.displayRef` setting.
 | 
						|
+
 | 
						|
A warning will be issued for refs that do not exist, but a glob that
 | 
						|
does not match any refs is silently ignored.
 | 
						|
 | 
						|
`GIT_NOTES_REWRITE_MODE`::
 | 
						|
	When copying notes during a rewrite, what to do if the target
 | 
						|
	commit already has a note.
 | 
						|
	Must be one of `overwrite`, `concatenate`, `cat_sort_uniq`, or `ignore`.
 | 
						|
	This overrides the `core.rewriteMode` setting.
 | 
						|
 | 
						|
`GIT_NOTES_REWRITE_REF`::
 | 
						|
	When rewriting commits, which notes to copy from the original
 | 
						|
	to the rewritten commit.  Must be a colon-delimited list of
 | 
						|
	refs or globs.
 | 
						|
+
 | 
						|
If not set in the environment, the list of notes to copy depends
 | 
						|
on the `notes.rewrite.<command>` and `notes.rewriteRef` settings.
 | 
						|
 | 
						|
GIT
 | 
						|
---
 | 
						|
Part of the linkgit:git[1] suite
 |