1 <?xml version=
"1.0" encoding=
"UTF-8"?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN"
3 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en">
6 <meta http-equiv=
"Content-Type" content=
"application/xhtml+xml; charset=UTF-8" />
7 <meta name=
"generator" content=
"AsciiDoc 10.2.0" />
8 <title>git-notes(
1)
</title>
9 <style type=
"text/css">
10 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
14 font-family: Georgia,serif;
18 h1, h2, h3, h4, h5, h6,
19 div.title, caption.title,
20 thead, p.table.header,
22 #author, #revnumber, #revdate, #revremark,
24 font-family: Arial,Helvetica,sans-serif;
28 margin:
1em
5%
1em
5%;
33 text-decoration: underline;
49 h1, h2, h3, h4, h5, h6 {
57 border-bottom:
2px solid silver;
77 border:
1px solid silver;
88 ul
> li { color: #aaa; }
89 ul
> li
> * { color: black; }
91 .monospaced, code, pre {
92 font-family:
"Courier New", Courier, monospace;
99 white-space: pre-wrap;
109 #revnumber, #revdate, #revremark {
114 border-top:
2px solid silver;
120 padding-bottom:
0.5em;
124 padding-bottom:
0.5em;
129 margin-bottom:
1.5em;
131 div.imageblock, div.exampleblock, div.verseblock,
132 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
133 div.admonitionblock {
135 margin-bottom:
1.5em;
137 div.admonitionblock {
139 margin-bottom:
2.0em;
144 div.content { /* Block element content. */
148 /* Block element titles. */
149 div.title, caption.title {
154 margin-bottom:
0.5em;
160 td div.title:first-child {
163 div.content div.title:first-child {
166 div.content + div.title {
170 div.sidebarblock
> div.content {
172 border:
1px solid #dddddd;
173 border-left:
4px solid #f0f0f0;
177 div.listingblock
> div.content {
178 border:
1px solid #dddddd;
179 border-left:
5px solid #f0f0f0;
184 div.quoteblock, div.verseblock {
188 border-left:
5px solid #f0f0f0;
192 div.quoteblock
> div.attribution {
197 div.verseblock
> pre.content {
198 font-family: inherit;
201 div.verseblock
> div.attribution {
205 /* DEPRECATED: Pre version
8.2.7 verse style literal block. */
206 div.verseblock + div.attribution {
210 div.admonitionblock .icon {
214 text-decoration: underline;
216 padding-right:
0.5em;
218 div.admonitionblock td.content {
220 border-left:
3px solid #dddddd;
223 div.exampleblock
> div.content {
224 border-left:
3px solid #dddddd;
228 div.imageblock div.content { padding-left:
0; }
229 span.image img { border-style: none; vertical-align: text-bottom; }
230 a.image:visited { color: white; }
234 margin-bottom:
0.8em;
247 list-style-position: outside;
250 list-style-type: decimal;
253 list-style-type: lower-alpha;
256 list-style-type: upper-alpha;
259 list-style-type: lower-roman;
262 list-style-type: upper-roman;
265 div.compact ul, div.compact ol,
266 div.compact p, div.compact p,
267 div.compact div, div.compact div {
269 margin-bottom:
0.1em;
281 margin-bottom:
0.8em;
284 padding-bottom:
15px;
286 dt.hdlist1.strong, td.hdlist1.strong {
292 padding-right:
0.8em;
298 div.hdlist.compact tr {
307 .footnote, .footnoteref {
311 span.footnote, span.footnoteref {
312 vertical-align: super;
316 margin:
20px
0 20px
0;
320 #footnotes div.footnote {
326 border-top:
1px solid silver;
335 padding-right:
0.5em;
336 padding-bottom:
0.3em;
344 #footer-badges { display: none; }
348 margin-bottom:
2.5em;
356 margin-bottom:
0.1em;
359 div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
376 span.aqua { color: aqua; }
377 span.black { color: black; }
378 span.blue { color: blue; }
379 span.fuchsia { color: fuchsia; }
380 span.gray { color: gray; }
381 span.green { color: green; }
382 span.lime { color: lime; }
383 span.maroon { color: maroon; }
384 span.navy { color: navy; }
385 span.olive { color: olive; }
386 span.purple { color: purple; }
387 span.red { color: red; }
388 span.silver { color: silver; }
389 span.teal { color: teal; }
390 span.white { color: white; }
391 span.yellow { color: yellow; }
393 span.aqua-background { background: aqua; }
394 span.black-background { background: black; }
395 span.blue-background { background: blue; }
396 span.fuchsia-background { background: fuchsia; }
397 span.gray-background { background: gray; }
398 span.green-background { background: green; }
399 span.lime-background { background: lime; }
400 span.maroon-background { background: maroon; }
401 span.navy-background { background: navy; }
402 span.olive-background { background: olive; }
403 span.purple-background { background: purple; }
404 span.red-background { background: red; }
405 span.silver-background { background: silver; }
406 span.teal-background { background: teal; }
407 span.white-background { background: white; }
408 span.yellow-background { background: yellow; }
410 span.big { font-size:
2em; }
411 span.small { font-size:
0.6em; }
413 span.underline { text-decoration: underline; }
414 span.overline { text-decoration: overline; }
415 span.line-through { text-decoration: line-through; }
417 div.unbreakable { page-break-inside: avoid; }
427 margin-bottom:
1.5em;
429 div.tableblock
> table {
430 border:
3px solid #
527bbd;
432 thead, p.table.header {
439 /* Because the table frame attribute is overridden by CSS in most browsers. */
440 div.tableblock
> table[
frame=
"void"] {
443 div.tableblock
> table[
frame=
"hsides"] {
444 border-left-style: none;
445 border-right-style: none;
447 div.tableblock
> table[
frame=
"vsides"] {
448 border-top-style: none;
449 border-bottom-style: none;
460 margin-bottom:
1.5em;
462 thead, p.tableblock.header {
473 border-color: #
527bbd;
474 border-collapse: collapse;
476 th.tableblock, td.tableblock {
480 border-color: #
527bbd;
483 table.tableblock.frame-topbot {
484 border-left-style: hidden;
485 border-right-style: hidden;
487 table.tableblock.frame-sides {
488 border-top-style: hidden;
489 border-bottom-style: hidden;
491 table.tableblock.frame-none {
492 border-style: hidden;
495 th.tableblock.halign-left, td.tableblock.halign-left {
498 th.tableblock.halign-center, td.tableblock.halign-center {
501 th.tableblock.halign-right, td.tableblock.halign-right {
505 th.tableblock.valign-top, td.tableblock.valign-top {
508 th.tableblock.valign-middle, td.tableblock.valign-middle {
509 vertical-align: middle;
511 th.tableblock.valign-bottom, td.tableblock.valign-bottom {
512 vertical-align: bottom;
523 padding-bottom:
0.5em;
524 border-top:
2px solid silver;
525 border-bottom:
2px solid silver;
530 body.manpage div.sectionbody {
535 body.manpage div#toc { display: none; }
540 <script type=
"text/javascript">
542 var asciidoc = { // Namespace.
544 /////////////////////////////////////////////////////////////////////
545 // Table Of Contents generator
546 /////////////////////////////////////////////////////////////////////
548 /* Author: Mihai Bazon, September
2002
549 * http://students.infoiasi.ro/~mishoo
551 * Table Of Content generator
554 * Feel free to use this script under the terms of the GNU General Public
555 * License, as long as you do not remove or alter this notice.
558 /* modified by Troy D. Hanson, September
2006. License: GPL */
559 /* modified by Stuart Rackham,
2006,
2009. License: GPL */
562 toc: function (toclevels) {
564 function getText(el) {
566 for (var i = el.firstChild; i != null; i = i.nextSibling) {
567 if (i.nodeType ==
3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
569 else if (i.firstChild != null)
575 function TocEntry(el, text, toclevel) {
578 this.toclevel = toclevel;
581 function tocEntries(el, toclevels) {
582 var result = new Array;
583 var re = new RegExp('[hH]([
1-'+(toclevels+
1)+'])');
584 // Function that scans the DOM tree for header elements (the DOM2
585 // nodeIterator API would be a better technique but not supported by all
587 var iterate = function (el) {
588 for (var i = el.firstChild; i != null; i = i.nextSibling) {
589 if (i.nodeType ==
1 /* Node.ELEMENT_NODE */) {
590 var mo = re.exec(i.tagName);
591 if (mo && (i.getAttribute(
"class") || i.getAttribute(
"className")) !=
"float") {
592 result[result.length] = new TocEntry(i, getText(i), mo[
1]-
1);
602 var toc = document.getElementById(
"toc");
607 // Delete existing TOC entries in case we're reloading the TOC.
608 var tocEntriesToRemove = [];
610 for (i =
0; i < toc.childNodes.length; i++) {
611 var entry = toc.childNodes[i];
612 if (entry.nodeName.toLowerCase() == 'div'
613 && entry.getAttribute(
"class")
614 && entry.getAttribute(
"class").match(/^toclevel/))
615 tocEntriesToRemove.push(entry);
617 for (i =
0; i < tocEntriesToRemove.length; i++) {
618 toc.removeChild(tocEntriesToRemove[i]);
621 // Rebuild TOC entries.
622 var entries = tocEntries(document.getElementById(
"content"), toclevels);
623 for (var i =
0; i < entries.length; ++i) {
624 var entry = entries[i];
625 if (entry.element.id ==
"")
626 entry.element.id =
"_toc_" + i;
627 var a = document.createElement(
"a");
628 a.href =
"#" + entry.element.id;
629 a.appendChild(document.createTextNode(entry.text));
630 var div = document.createElement(
"div");
632 div.className =
"toclevel" + entry.toclevel;
633 toc.appendChild(div);
635 if (entries.length ==
0)
636 toc.parentNode.removeChild(toc);
640 /////////////////////////////////////////////////////////////////////
641 // Footnotes generator
642 /////////////////////////////////////////////////////////////////////
644 /* Based on footnote generation code from:
645 * http://www.brandspankingnew.net/archive/
2005/
07/format_footnote.html
648 footnotes: function () {
649 // Delete existing footnote entries in case we're reloading the footnodes.
651 var noteholder = document.getElementById(
"footnotes");
655 var entriesToRemove = [];
656 for (i =
0; i < noteholder.childNodes.length; i++) {
657 var entry = noteholder.childNodes[i];
658 if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute(
"class") ==
"footnote")
659 entriesToRemove.push(entry);
661 for (i =
0; i < entriesToRemove.length; i++) {
662 noteholder.removeChild(entriesToRemove[i]);
665 // Rebuild footnote entries.
666 var cont = document.getElementById(
"content");
667 var spans = cont.getElementsByTagName(
"span");
670 for (i=
0; i
<spans.length; i++) {
671 if (spans[i].className ==
"footnote") {
673 var note = spans[i].getAttribute(
"data-note");
675 // Use [\s\S] in place of . so multi-line matches work.
676 // Because JavaScript has no s (dotall) regex flag.
677 note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[
1];
679 "[<a id='_footnoteref_" + n +
"' href='#_footnote_" + n +
680 "' title='View footnote' class='footnote'>" + n +
"</a>]";
681 spans[i].setAttribute(
"data-note", note);
683 noteholder.innerHTML +=
684 "<div class='footnote' id='_footnote_" + n +
"'>" +
685 "<a href='#_footnoteref_" + n +
"' title='Return to text'>" +
686 n +
"</a>. " + note +
"</div>";
687 var id =spans[i].getAttribute(
"id");
688 if (id != null) refs[
"#"+id] = n;
692 noteholder.parentNode.removeChild(noteholder);
694 // Process footnoterefs.
695 for (i=
0; i
<spans.length; i++) {
696 if (spans[i].className ==
"footnoteref") {
697 var href = spans[i].getElementsByTagName(
"a")[
0].getAttribute(
"href");
698 href = href.match(/#.*/)[
0]; // Because IE return full URL.
701 "[<a href='#_footnote_" + n +
702 "' title='View footnote' class='footnote'>" + n +
"</a>]";
708 install: function(toclevels) {
711 function reinstall() {
712 asciidoc.footnotes();
714 asciidoc.toc(toclevels);
718 function reinstallAndRemoveTimer() {
719 clearInterval(timerId);
723 timerId = setInterval(reinstall,
500);
724 if (document.addEventListener)
725 document.addEventListener(
"DOMContentLoaded", reinstallAndRemoveTimer, false);
727 window.onload = reinstallAndRemoveTimer;
735 <body class=
"manpage">
738 git-notes(
1) Manual Page
741 <div class=
"sectionbody">
743 Add or inspect object notes
749 <h2 id=
"_synopsis">SYNOPSIS
</h2>
750 <div class=
"sectionbody">
751 <div class=
"verseblock">
752 <pre class=
"content"><em>git notes
</em> [list [
<object
>]]
753 <em>git notes
</em> add [-f] [--allow-empty] [--[no-]separator | --separator=
<paragraph-break
>] [--[no-]stripspace] [-F
<file
> | -m
<msg
> | (-c | -C)
<object
>] [
<object
>]
754 <em>git notes
</em> copy [-f] ( --stdin |
<from-object
> [
<to-object
>] )
755 <em>git notes
</em> append [--allow-empty] [--[no-]separator | --separator=
<paragraph-break
>] [--[no-]stripspace] [-F
<file
> | -m
<msg
> | (-c | -C)
<object
>] [
<object
>]
756 <em>git notes
</em> edit [--allow-empty] [
<object
>] [--[no-]stripspace]
757 <em>git notes
</em> show [
<object
>]
758 <em>git notes
</em> merge [-v | -q] [-s
<strategy
> ]
<notes-ref
>
759 <em>git notes
</em> merge --commit [-v | -q]
760 <em>git notes
</em> merge --abort [-v | -q]
761 <em>git notes
</em> remove [--ignore-missing] [--stdin] [
<object
>…]
762 <em>git notes
</em> prune [-n] [-v]
763 <em>git notes
</em> get-ref
</pre>
764 <div class=
"attribution">
769 <h2 id=
"_description">DESCRIPTION
</h2>
770 <div class=
"sectionbody">
771 <div class=
"paragraph"><p>Adds, removes, or reads notes attached to objects, without touching
772 the objects themselves.
</p></div>
773 <div class=
"paragraph"><p>By default, notes are saved to and read from
<code>refs/notes/commits
</code>, but
774 this default can be overridden. See the OPTIONS, CONFIGURATION, and
775 ENVIRONMENT sections below. If this ref does not exist, it will be
776 quietly created when it is first needed to store a note.
</p></div>
777 <div class=
"paragraph"><p>A typical use of notes is to supplement a commit message without
778 changing the commit itself. Notes can be shown by
<em>git log
</em> along with
779 the original commit message. To distinguish these notes from the
780 message stored in the commit object, the notes are indented like the
781 message, after an unindented line saying
"Notes (<refname>):" (or
782 "Notes:" for
<code>refs/notes/commits
</code>).
</p></div>
783 <div class=
"paragraph"><p>Notes can also be added to patches prepared with
<code>git format-patch
</code> by
784 using the
<code>--notes
</code> option. Such notes are added as a patch commentary
785 after a three dash separator line.
</p></div>
786 <div class=
"paragraph"><p>To change which notes are shown by
<em>git log
</em>, see the
787 "notes.displayRef" discussion in
<a href=
"#CONFIGURATION">[CONFIGURATION]
</a>.
</p></div>
788 <div class=
"paragraph"><p>See the
"notes.rewrite.<command>" configuration for a way to carry
789 notes across commands that rewrite commits.
</p></div>
793 <h2 id=
"_subcommands">SUBCOMMANDS
</h2>
794 <div class=
"sectionbody">
795 <div class=
"dlist"><dl>
801 List the notes object for a given object. If no object is
802 given, show a list of all note objects and the objects they
803 annotate (in the format
"<note object> <annotated object>").
804 This is the default subcommand if no subcommand is given.
812 Add notes for a given object (defaults to HEAD). Abort if the
813 object already has notes (use
<code>-f
</code> to overwrite existing notes).
814 However, if you
’re using
<code>add
</code> interactively (using an editor
815 to supply the notes contents), then - instead of aborting -
816 the existing notes will be opened in the editor (like the
<code>edit
</code>
817 subcommand). If you specify multiple
<code>-m
</code> and
<code>-F
</code>, a blank
818 line will be inserted between the messages. Use the
<code>--separator
</code>
819 option to insert other delimiters.
827 Copy the notes for the first object onto the second object (defaults to
828 HEAD). Abort if the second object already has notes, or if the first
829 object has none (use -f to overwrite existing notes to the
830 second object). This subcommand is equivalent to:
831 <code>git notes add [-f] -C $(git notes list
<from-object
>)
<to-object
></code>
833 <div class=
"paragraph"><p>In
<code>--stdin
</code> mode, take lines in the format
</p></div>
834 <div class=
"listingblock">
835 <div class=
"content">
836 <pre><code><from-object
> SP
<to-object
> [ SP
<rest
> ] LF
</code></pre>
838 <div class=
"paragraph"><p>on standard input, and copy the notes from each
<from-object
> to its
839 corresponding
<to-object
>. (The optional
<code><rest
></code> is ignored so that
840 the command can read the input given to the
<code>post-rewrite
</code> hook.)
</p></div>
847 Append new message(s) given by
<code>-m
</code> or
<code>-F
</code> options to an
848 existing note, or add them as a new note if one does not
849 exist, for the object (defaults to HEAD). When appending to
850 an existing note, a blank line is added before each new
851 message as an inter-paragraph separator. The separator can
852 be customized with the
<code>--separator
</code> option.
860 Edit the notes for a given object (defaults to HEAD).
868 Show the notes for a given object (defaults to HEAD).
876 Merge the given notes ref into the current notes ref.
877 This will try to merge the changes made by the given
878 notes ref (called
"remote") since the merge-base (if
879 any) into the current notes ref (called
"local").
881 <div class=
"paragraph"><p>If conflicts arise and a strategy for automatically resolving
882 conflicting notes (see the
"NOTES MERGE STRATEGIES" section) is not given,
883 the
"manual" resolver is used. This resolver checks out the
884 conflicting notes in a special worktree (
<code>.git/NOTES_MERGE_WORKTREE
</code>),
885 and instructs the user to manually resolve the conflicts there.
886 When done, the user can either finalize the merge with
887 <em>git notes merge --commit
</em>, or abort the merge with
888 <em>git notes merge --abort
</em>.
</p></div>
895 Remove the notes for given objects (defaults to HEAD). When
896 giving zero or one object from the command line, this is
897 equivalent to specifying an empty note message to
898 the
<code>edit
</code> subcommand.
906 Remove all notes for non-existing/unreachable objects.
914 Print the current notes ref. This provides an easy way to
915 retrieve the current notes ref (e.g. from scripts).
922 <h2 id=
"_options">OPTIONS
</h2>
923 <div class=
"sectionbody">
924 <div class=
"dlist"><dl>
933 When adding notes to an object that already has notes,
934 overwrite the existing notes (instead of aborting).
941 --message=
<msg
>
945 Use the given note message (instead of prompting).
946 If multiple
<code>-m
</code> options are given, their values
947 are concatenated as separate paragraphs.
948 Lines starting with
<code>#
</code> and empty lines other than a
949 single line between paragraphs will be stripped out.
950 If you wish to keep them verbatim, use
<code>--no-stripspace
</code>.
961 Take the note message from the given file. Use
<em>-
</em> to
962 read the note message from the standard input.
963 Lines starting with
<code>#
</code> and empty lines other than a
964 single line between paragraphs will be stripped out.
965 If you wish to keep them verbatim, use
<code>--no-stripspace
</code>.
972 --reuse-message=
<object
>
976 Take the given blob object (for example, another note) as the
977 note message. (Use
<code>git notes copy
<object
></code> instead to
978 copy notes between objects.). By default, message will be
979 copied verbatim, but if you wish to strip out the lines
980 starting with
<code>#
</code> and empty lines other than a single line
981 between paragraphs, use with`--stripspace` option.
988 --reedit-message=
<object
>
992 Like
<em>-C
</em>, but with
<code>-c
</code> the editor is invoked, so that
993 the user can further edit the note message.
1001 Allow an empty note object to be stored. The default behavior is
1002 to automatically remove empty notes.
1005 <dt class=
"hdlist1">
1006 --[no-]separator, --separator=
<paragraph-break
>
1010 Specify a string used as a custom inter-paragraph separator
1011 (a newline is added at the end as needed). If
<code>--no-separator
</code>, no
1012 separators will be added between paragraphs. Defaults to a blank
1016 <dt class=
"hdlist1">
1021 Strip leading and trailing whitespace from the note message.
1022 Also strip out empty lines other than a single line between
1023 paragraphs. Lines starting with
<code>#
</code> will be stripped out
1024 in non-editor cases like
<code>-m
</code>,
<code>-F
</code> and
<code>-C
</code>, but not in
1025 editor case like
<code>git notes edit
</code>,
<code>-c
</code>, etc.
1028 <dt class=
"hdlist1">
1033 Manipulate the notes tree in
<ref
>. This overrides
1034 <code>GIT_NOTES_REF
</code> and the
"core.notesRef" configuration. The ref
1035 specifies the full refname when it begins with
<code>refs/notes/
</code>; when it
1036 begins with
<code>notes/
</code>,
<code>refs/
</code> and otherwise
<code>refs/notes/
</code> is prefixed
1037 to form a full name of the ref.
1040 <dt class=
"hdlist1">
1045 Do not consider it an error to request removing notes from an
1046 object that does not have notes attached to it.
1049 <dt class=
"hdlist1">
1054 Also read the object names to remove notes from the standard
1055 input (there is no reason you cannot combine this with object
1056 names from the command line).
1059 <dt class=
"hdlist1">
1062 <dt class=
"hdlist1">
1067 Do not remove anything; just report the object names whose notes
1071 <dt class=
"hdlist1">
1074 <dt class=
"hdlist1">
1075 --strategy=
<strategy
>
1079 When merging notes, resolve notes conflicts using the given
1080 strategy. The following strategies are recognized:
"manual"
1081 (default),
"ours",
"theirs",
"union" and
"cat_sort_uniq".
1082 This option overrides the
"notes.mergeStrategy" configuration setting.
1083 See the
"NOTES MERGE STRATEGIES" section below for more
1084 information on each notes merge strategy.
1087 <dt class=
"hdlist1">
1092 Finalize an in-progress
<em>git notes merge
</em>. Use this option
1093 when you have resolved the conflicts that
<em>git notes merge
</em>
1094 stored in .git/NOTES_MERGE_WORKTREE. This amends the partial
1095 merge commit created by
<em>git notes merge
</em> (stored in
1096 .git/NOTES_MERGE_PARTIAL) by adding the notes in
1097 .git/NOTES_MERGE_WORKTREE. The notes ref stored in the
1098 .git/NOTES_MERGE_REF symref is updated to the resulting commit.
1101 <dt class=
"hdlist1">
1106 Abort/reset an in-progress
<em>git notes merge
</em>, i.e. a notes merge
1107 with conflicts. This simply removes all files related to the
1111 <dt class=
"hdlist1">
1114 <dt class=
"hdlist1">
1119 When merging notes, operate quietly.
1122 <dt class=
"hdlist1">
1125 <dt class=
"hdlist1">
1130 When merging notes, be more verbose.
1131 When pruning notes, report all object names whose notes are
1139 <h2 id=
"_discussion">DISCUSSION
</h2>
1140 <div class=
"sectionbody">
1141 <div class=
"paragraph"><p>Commit notes are blobs containing extra information about an object
1142 (usually information to supplement a commit
’s message). These blobs
1143 are taken from notes refs. A notes ref is usually a branch which
1144 contains
"files" whose paths are the object names for the objects
1145 they describe, with some directory separators included for performance
1146 reasons
<span class=
"footnote"><br />[Permitted pathnames have the form
1147 <em>bf
</em><code>/
</code><em>fe
</em><code>/
</code><em>30</em><code>/
</code><em>…</em><code>/
</code><em>680d5a
…</em>: a sequence of directory
1148 names of two hexadecimal digits each followed by a filename with the
1149 rest of the object ID.]
<br /></span>.
</p></div>
1150 <div class=
"paragraph"><p>Every notes change creates a new commit at the specified notes ref.
1151 You can therefore inspect the history of the notes by invoking, e.g.,
1152 <code>git log -p notes/commits
</code>. Currently the commit message only records
1153 which operation triggered the update, and the commit authorship is
1154 determined according to the usual rules (see
<a href=
"git-commit.html">git-commit(
1)
</a>).
1155 These details may change in the future.
</p></div>
1156 <div class=
"paragraph"><p>It is also permitted for a notes ref to point directly to a tree
1157 object, in which case the history of the notes can be read with
1158 <code>git log -p -g
<refname
></code>.
</p></div>
1162 <h2 id=
"_notes_merge_strategies">NOTES MERGE STRATEGIES
</h2>
1163 <div class=
"sectionbody">
1164 <div class=
"paragraph"><p>The default notes merge strategy is
"manual", which checks out
1165 conflicting notes in a special work tree for resolving notes conflicts
1166 (
<code>.git/NOTES_MERGE_WORKTREE
</code>), and instructs the user to resolve the
1167 conflicts in that work tree.
1168 When done, the user can either finalize the merge with
1169 <em>git notes merge --commit
</em>, or abort the merge with
1170 <em>git notes merge --abort
</em>.
</p></div>
1171 <div class=
"paragraph"><p>Users may select an automated merge strategy from among the following using
1172 either -s/--strategy option or configuring notes.mergeStrategy accordingly:
</p></div>
1173 <div class=
"paragraph"><p>"ours" automatically resolves conflicting notes in favor of the local
1174 version (i.e. the current notes ref).
</p></div>
1175 <div class=
"paragraph"><p>"theirs" automatically resolves notes conflicts in favor of the remote
1176 version (i.e. the given notes ref being merged into the current notes
1178 <div class=
"paragraph"><p>"union" automatically resolves notes conflicts by concatenating the
1179 local and remote versions.
</p></div>
1180 <div class=
"paragraph"><p>"cat_sort_uniq" is similar to
"union", but in addition to concatenating
1181 the local and remote versions, this strategy also sorts the resulting
1182 lines, and removes duplicate lines from the result. This is equivalent
1183 to applying the
"cat | sort | uniq" shell pipeline to the local and
1184 remote versions. This strategy is useful if the notes follow a line-based
1185 format where one wants to avoid duplicated lines in the merge result.
1186 Note that if either the local or remote version contain duplicate lines
1187 prior to the merge, these will also be removed by this notes merge
1192 <h2 id=
"_examples">EXAMPLES
</h2>
1193 <div class=
"sectionbody">
1194 <div class=
"paragraph"><p>You can use notes to add annotations with information that was not
1195 available at the time a commit was written.
</p></div>
1196 <div class=
"listingblock">
1197 <div class=
"content">
1198 <pre><code>$ git notes add -m 'Tested-by: Johannes Sixt
<j6t@kdbg.org
>'
72a144e2
1199 $ git show -s
72a144e
1201 Signed-off-by: Junio C Hamano
<gitster@pobox.com
>
1204 Tested-by: Johannes Sixt
<j6t@kdbg.org
></code></pre>
1206 <div class=
"paragraph"><p>In principle, a note is a regular Git blob, and any kind of
1207 (non-)format is accepted. You can binary-safely create notes from
1208 arbitrary files using
<em>git hash-object
</em>:
</p></div>
1209 <div class=
"listingblock">
1210 <div class=
"content">
1212 $ blob=$(git hash-object -w a.out)
1213 $ git notes --ref=built add --allow-empty -C
"$blob" HEAD
</code></pre>
1215 <div class=
"paragraph"><p>(You cannot simply use
<code>git notes --ref=built add -F a.out HEAD
</code>
1216 because that is not binary-safe.)
1217 Of course, it doesn
’t make much sense to display non-text-format notes
1218 with
<em>git log
</em>, so if you use such notes, you
’ll probably need to write
1219 some special-purpose tools to do something useful with them.
</p></div>
1223 <h2 id=
"CONFIGURATION">CONFIGURATION
</h2>
1224 <div class=
"sectionbody">
1225 <div class=
"dlist"><dl>
1226 <dt class=
"hdlist1">
1231 Notes ref to read and manipulate instead of
1232 <code>refs/notes/commits
</code>. Must be an unabbreviated ref name.
1233 This setting can be overridden through the environment and
1238 <div class=
"paragraph"><p>Everything above this line in this section isn
’t included from the
1239 <a href=
"git-config.html">git-config(
1)
</a> documentation. The content that follows is the
1240 same as what
’s found there:
</p></div>
1241 <div class=
"dlist"><dl>
1242 <dt class=
"hdlist1">
1247 Which merge strategy to choose by default when resolving notes
1248 conflicts. Must be one of
<code>manual
</code>,
<code>ours
</code>,
<code>theirs
</code>,
<code>union
</code>, or
1249 <code>cat_sort_uniq
</code>. Defaults to
<code>manual
</code>. See the
"NOTES MERGE STRATEGIES"
1250 section of
<a href=
"git-notes.html">git-notes(
1)
</a> for more information on each strategy.
1252 <div class=
"paragraph"><p>This setting can be overridden by passing the
<code>--strategy
</code> option to
1253 <a href=
"git-notes.html">git-notes(
1)
</a>.
</p></div>
1255 <dt class=
"hdlist1">
1256 notes.
<name
>.mergeStrategy
1260 Which merge strategy to choose when doing a notes merge into
1261 refs/notes/
<name
>. This overrides the more general
1262 "notes.mergeStrategy". See the
"NOTES MERGE STRATEGIES" section in
1263 <a href=
"git-notes.html">git-notes(
1)
</a> for more information on the available strategies.
1266 <dt class=
"hdlist1">
1271 Which ref (or refs, if a glob or specified more than once), in
1272 addition to the default set by
<code>core.notesRef
</code> or
1273 <code>GIT_NOTES_REF
</code>, to read notes from when showing commit
1274 messages with the
<em>git log
</em> family of commands.
1276 <div class=
"paragraph"><p>This setting can be overridden with the
<code>GIT_NOTES_DISPLAY_REF
</code>
1277 environment variable, which must be a colon separated list of refs or
1279 <div class=
"paragraph"><p>A warning will be issued for refs that do not exist,
1280 but a glob that does not match any refs is silently ignored.
</p></div>
1281 <div class=
"paragraph"><p>This setting can be disabled by the
<code>--no-notes
</code> option to the
<em>git
1282 log
</em> family of commands, or by the
<code>--notes=
<ref
></code> option accepted by
1283 those commands.
</p></div>
1284 <div class=
"paragraph"><p>The effective value of
"core.notesRef" (possibly overridden by
1285 GIT_NOTES_REF) is also implicitly added to the list of refs to be
1286 displayed.
</p></div>
1288 <dt class=
"hdlist1">
1289 notes.rewrite.
<command
>
1293 When rewriting commits with
<command
> (currently
<code>amend
</code> or
1294 <code>rebase
</code>), if this variable is
<code>false
</code>, git will not copy
1295 notes from the original to the rewritten commit. Defaults to
1296 <code>true
</code>. See also
"<code>notes.rewriteRef</code>" below.
1298 <div class=
"paragraph"><p>This setting can be overridden with the
<code>GIT_NOTES_REWRITE_REF
</code>
1299 environment variable, which must be a colon separated list of refs or
1302 <dt class=
"hdlist1">
1307 When copying notes during a rewrite (see the
1308 "notes.rewrite.<command>" option), determines what to do if
1309 the target commit already has a note. Must be one of
1310 <code>overwrite
</code>,
<code>concatenate
</code>,
<code>cat_sort_uniq
</code>, or
<code>ignore
</code>.
1311 Defaults to
<code>concatenate
</code>.
1313 <div class=
"paragraph"><p>This setting can be overridden with the
<code>GIT_NOTES_REWRITE_MODE
</code>
1314 environment variable.
</p></div>
1316 <dt class=
"hdlist1">
1321 When copying notes during a rewrite, specifies the (fully
1322 qualified) ref whose notes should be copied. May be a glob,
1323 in which case notes in all matching refs will be copied. You
1324 may also specify this configuration several times.
1326 <div class=
"paragraph"><p>Does not have a default value; you must configure this variable to
1327 enable note rewriting. Set it to
<code>refs/notes/commits
</code> to enable
1328 rewriting for the default commit notes.
</p></div>
1329 <div class=
"paragraph"><p>Can be overridden with the
<code>GIT_NOTES_REWRITE_REF
</code> environment variable.
1330 See
<code>notes.rewrite.
<command
></code> above for a further description of its format.
</p></div>
1336 <h2 id=
"_environment">ENVIRONMENT
</h2>
1337 <div class=
"sectionbody">
1338 <div class=
"dlist"><dl>
1339 <dt class=
"hdlist1">
1340 <code>GIT_NOTES_REF
</code>
1344 Which ref to manipulate notes from, instead of
<code>refs/notes/commits
</code>.
1345 This overrides the
<code>core.notesRef
</code> setting.
1348 <dt class=
"hdlist1">
1349 <code>GIT_NOTES_DISPLAY_REF
</code>
1353 Colon-delimited list of refs or globs indicating which refs,
1354 in addition to the default from
<code>core.notesRef
</code> or
1355 <code>GIT_NOTES_REF
</code>, to read notes from when showing commit
1357 This overrides the
<code>notes.displayRef
</code> setting.
1359 <div class=
"paragraph"><p>A warning will be issued for refs that do not exist, but a glob that
1360 does not match any refs is silently ignored.
</p></div>
1362 <dt class=
"hdlist1">
1363 <code>GIT_NOTES_REWRITE_MODE
</code>
1367 When copying notes during a rewrite, what to do if the target
1368 commit already has a note.
1369 Must be one of
<code>overwrite
</code>,
<code>concatenate
</code>,
<code>cat_sort_uniq
</code>, or
<code>ignore
</code>.
1370 This overrides the
<code>core.rewriteMode
</code> setting.
1373 <dt class=
"hdlist1">
1374 <code>GIT_NOTES_REWRITE_REF
</code>
1378 When rewriting commits, which notes to copy from the original
1379 to the rewritten commit. Must be a colon-delimited list of
1382 <div class=
"paragraph"><p>If not set in the environment, the list of notes to copy depends
1383 on the
<code>notes.rewrite.
<command
></code> and
<code>notes.rewriteRef
</code> settings.
</p></div>
1389 <h2 id=
"_git">GIT
</h2>
1390 <div class=
"sectionbody">
1391 <div class=
"paragraph"><p>Part of the
<a href=
"git.html">git(
1)
</a> suite
</p></div>
1395 <div id=
"footnotes"><hr /></div>
1397 <div id=
"footer-text">
1399 2023-
08-
17 17:
18:
11 PDT