`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 the "NOTES MERGE STRATEGIES"
	section of linkgit:git-notes[1] for more information on each strategy.
+
This setting can be overridden by passing the `--strategy` option to
linkgit:git-notes[1].

`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 in
	linkgit:git-notes[1] for more information on the available strategies.

`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 with the `GIT_NOTES_DISPLAY_REF`
environment variable, which must be a colon separated list of refs or
globs.
+
A warning will be issued for refs that do not exist,
but a glob that does not match any refs is silently ignored.
+
This setting can be disabled by the `--no-notes` option to the linkgit:git-log[1]
family of commands, or by the `--notes=<ref>` option accepted by
those commands.
+
The effective value of `core.notesRef` (possibly overridden by
`GIT_NOTES_REF`) is also implicitly added to the list of refs to be
displayed.

`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 with the `GIT_NOTES_REWRITE_REF`
environment variable, which must be a colon separated list of refs or
globs.

`notes.rewriteMode`::
	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
	`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.  Set it to `refs/notes/commits` to enable
rewriting for the default commit notes.
+
Can be overridden with the `GIT_NOTES_REWRITE_REF` environment variable.
See `notes.rewrite.<command>` above for a further description of its format.
