Merge branch 'master' of /usr/local/google/home/jch/w/git-htmldocs
[git-htmldocs.git] / git-notes.html
blob230ed94ac21b1affe537c610f715760d22befe20
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">
5 <head>
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 */
12 /* Default font. */
13 body {
14 font-family: Georgia,serif;
17 /* Title font. */
18 h1, h2, h3, h4, h5, h6,
19 div.title, caption.title,
20 thead, p.table.header,
21 #toctitle,
22 #author, #revnumber, #revdate, #revremark,
23 #footer {
24 font-family: Arial,Helvetica,sans-serif;
27 body {
28 margin: 1em 5% 1em 5%;
31 a {
32 color: blue;
33 text-decoration: underline;
35 a:visited {
36 color: fuchsia;
39 em {
40 font-style: italic;
41 color: navy;
44 strong {
45 font-weight: bold;
46 color: #083194;
49 h1, h2, h3, h4, h5, h6 {
50 color: #527bbd;
51 margin-top: 1.2em;
52 margin-bottom: 0.5em;
53 line-height: 1.3;
56 h1, h2, h3 {
57 border-bottom: 2px solid silver;
59 h2 {
60 padding-top: 0.5em;
62 h3 {
63 float: left;
65 h3 + * {
66 clear: left;
68 h5 {
69 font-size: 1.0em;
72 div.sectionbody {
73 margin-left: 0;
76 hr {
77 border: 1px solid silver;
80 p {
81 margin-top: 0.5em;
82 margin-bottom: 0.5em;
85 ul, ol, li > p {
86 margin-top: 0;
88 ul > li { color: #aaa; }
89 ul > li > * { color: black; }
91 .monospaced, code, pre {
92 font-family: "Courier New", Courier, monospace;
93 font-size: inherit;
94 color: navy;
95 padding: 0;
96 margin: 0;
98 pre {
99 white-space: pre-wrap;
102 #author {
103 color: #527bbd;
104 font-weight: bold;
105 font-size: 1.1em;
107 #email {
109 #revnumber, #revdate, #revremark {
112 #footer {
113 font-size: small;
114 border-top: 2px solid silver;
115 padding-top: 0.5em;
116 margin-top: 4.0em;
118 #footer-text {
119 float: left;
120 padding-bottom: 0.5em;
122 #footer-badges {
123 float: right;
124 padding-bottom: 0.5em;
127 #preamble {
128 margin-top: 1.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 {
134 margin-top: 1.0em;
135 margin-bottom: 1.5em;
137 div.admonitionblock {
138 margin-top: 2.0em;
139 margin-bottom: 2.0em;
140 margin-right: 10%;
141 color: #606060;
144 div.content { /* Block element content. */
145 padding: 0;
148 /* Block element titles. */
149 div.title, caption.title {
150 color: #527bbd;
151 font-weight: bold;
152 text-align: left;
153 margin-top: 1.0em;
154 margin-bottom: 0.5em;
156 div.title + * {
157 margin-top: 0;
160 td div.title:first-child {
161 margin-top: 0.0em;
163 div.content div.title:first-child {
164 margin-top: 0.0em;
166 div.content + div.title {
167 margin-top: 0.0em;
170 div.sidebarblock > div.content {
171 background: #ffffee;
172 border: 1px solid #dddddd;
173 border-left: 4px solid #f0f0f0;
174 padding: 0.5em;
177 div.listingblock > div.content {
178 border: 1px solid #dddddd;
179 border-left: 5px solid #f0f0f0;
180 background: #f8f8f8;
181 padding: 0.5em;
184 div.quoteblock, div.verseblock {
185 padding-left: 1.0em;
186 margin-left: 1.0em;
187 margin-right: 10%;
188 border-left: 5px solid #f0f0f0;
189 color: #888;
192 div.quoteblock > div.attribution {
193 padding-top: 0.5em;
194 text-align: right;
197 div.verseblock > pre.content {
198 font-family: inherit;
199 font-size: inherit;
201 div.verseblock > div.attribution {
202 padding-top: 0.75em;
203 text-align: left;
205 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
206 div.verseblock + div.attribution {
207 text-align: left;
210 div.admonitionblock .icon {
211 vertical-align: top;
212 font-size: 1.1em;
213 font-weight: bold;
214 text-decoration: underline;
215 color: #527bbd;
216 padding-right: 0.5em;
218 div.admonitionblock td.content {
219 padding-left: 0.5em;
220 border-left: 3px solid #dddddd;
223 div.exampleblock > div.content {
224 border-left: 3px solid #dddddd;
225 padding-left: 0.5em;
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; }
232 dl {
233 margin-top: 0.8em;
234 margin-bottom: 0.8em;
236 dt {
237 margin-top: 0.5em;
238 margin-bottom: 0;
239 font-style: normal;
240 color: navy;
242 dd > *:first-child {
243 margin-top: 0.1em;
246 ul, ol {
247 list-style-position: outside;
249 ol.arabic {
250 list-style-type: decimal;
252 ol.loweralpha {
253 list-style-type: lower-alpha;
255 ol.upperalpha {
256 list-style-type: upper-alpha;
258 ol.lowerroman {
259 list-style-type: lower-roman;
261 ol.upperroman {
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 {
268 margin-top: 0.1em;
269 margin-bottom: 0.1em;
272 tfoot {
273 font-weight: bold;
275 td > div.verse {
276 white-space: pre;
279 div.hdlist {
280 margin-top: 0.8em;
281 margin-bottom: 0.8em;
283 div.hdlist tr {
284 padding-bottom: 15px;
286 dt.hdlist1.strong, td.hdlist1.strong {
287 font-weight: bold;
289 td.hdlist1 {
290 vertical-align: top;
291 font-style: normal;
292 padding-right: 0.8em;
293 color: navy;
295 td.hdlist2 {
296 vertical-align: top;
298 div.hdlist.compact tr {
299 margin: 0;
300 padding-bottom: 0;
303 .comment {
304 background: yellow;
307 .footnote, .footnoteref {
308 font-size: 0.8em;
311 span.footnote, span.footnoteref {
312 vertical-align: super;
315 #footnotes {
316 margin: 20px 0 20px 0;
317 padding: 7px 0 0 0;
320 #footnotes div.footnote {
321 margin: 0 0 5px 0;
324 #footnotes hr {
325 border: none;
326 border-top: 1px solid silver;
327 height: 1px;
328 text-align: left;
329 margin-left: 0;
330 width: 20%;
331 min-width: 100px;
334 div.colist td {
335 padding-right: 0.5em;
336 padding-bottom: 0.3em;
337 vertical-align: top;
339 div.colist td img {
340 margin-top: 0.3em;
343 @media print {
344 #footer-badges { display: none; }
347 #toc {
348 margin-bottom: 2.5em;
351 #toctitle {
352 color: #527bbd;
353 font-size: 1.1em;
354 font-weight: bold;
355 margin-top: 1.0em;
356 margin-bottom: 0.1em;
359 div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
360 margin-top: 0;
361 margin-bottom: 0;
363 div.toclevel2 {
364 margin-left: 2em;
365 font-size: 0.9em;
367 div.toclevel3 {
368 margin-left: 4em;
369 font-size: 0.9em;
371 div.toclevel4 {
372 margin-left: 6em;
373 font-size: 0.9em;
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; }
421 * xhtml11 specific
423 * */
425 div.tableblock {
426 margin-top: 1.0em;
427 margin-bottom: 1.5em;
429 div.tableblock > table {
430 border: 3px solid #527bbd;
432 thead, p.table.header {
433 font-weight: bold;
434 color: #527bbd;
436 p.table {
437 margin-top: 0;
439 /* Because the table frame attribute is overridden by CSS in most browsers. */
440 div.tableblock > table[frame="void"] {
441 border-style: none;
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;
454 * html5 specific
456 * */
458 table.tableblock {
459 margin-top: 1.0em;
460 margin-bottom: 1.5em;
462 thead, p.tableblock.header {
463 font-weight: bold;
464 color: #527bbd;
466 p.tableblock {
467 margin-top: 0;
469 table.tableblock {
470 border-width: 3px;
471 border-spacing: 0px;
472 border-style: solid;
473 border-color: #527bbd;
474 border-collapse: collapse;
476 th.tableblock, td.tableblock {
477 border-width: 1px;
478 padding: 4px;
479 border-style: solid;
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 {
496 text-align: left;
498 th.tableblock.halign-center, td.tableblock.halign-center {
499 text-align: center;
501 th.tableblock.halign-right, td.tableblock.halign-right {
502 text-align: right;
505 th.tableblock.valign-top, td.tableblock.valign-top {
506 vertical-align: 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;
517 * manpage specific
519 * */
521 body.manpage h1 {
522 padding-top: 0.5em;
523 padding-bottom: 0.5em;
524 border-top: 2px solid silver;
525 border-bottom: 2px solid silver;
527 body.manpage h2 {
528 border-style: none;
530 body.manpage div.sectionbody {
531 margin-left: 3em;
534 @media print {
535 body.manpage div#toc { display: none; }
539 </style>
540 <script type="text/javascript">
541 /*<![CDATA[*/
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
552 * Version: 0.4
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 */
561 // toclevels = 1..4.
562 toc: function (toclevels) {
564 function getText(el) {
565 var text = "";
566 for (var i = el.firstChild; i != null; i = i.nextSibling) {
567 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
568 text += i.data;
569 else if (i.firstChild != null)
570 text += getText(i);
572 return text;
575 function TocEntry(el, text, toclevel) {
576 this.element = el;
577 this.text = text;
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
586 // browsers).
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);
594 iterate(i);
598 iterate(el);
599 return result;
602 var toc = document.getElementById("toc");
603 if (!toc) {
604 return;
607 // Delete existing TOC entries in case we're reloading the TOC.
608 var tocEntriesToRemove = [];
609 var i;
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");
631 div.appendChild(a);
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.
650 var i;
651 var noteholder = document.getElementById("footnotes");
652 if (!noteholder) {
653 return;
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");
668 var refs = {};
669 var n = 0;
670 for (i=0; i<spans.length; i++) {
671 if (spans[i].className == "footnote") {
672 n++;
673 var note = spans[i].getAttribute("data-note");
674 if (!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];
678 spans[i].innerHTML =
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;
691 if (n == 0)
692 noteholder.parentNode.removeChild(noteholder);
693 else {
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.
699 n = refs[href];
700 spans[i].innerHTML =
701 "[<a href='#_footnote_" + n +
702 "' title='View footnote' class='footnote'>" + n + "</a>]";
708 install: function(toclevels) {
709 var timerId;
711 function reinstall() {
712 asciidoc.footnotes();
713 if (toclevels) {
714 asciidoc.toc(toclevels);
718 function reinstallAndRemoveTimer() {
719 clearInterval(timerId);
720 reinstall();
723 timerId = setInterval(reinstall, 500);
724 if (document.addEventListener)
725 document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
726 else
727 window.onload = reinstallAndRemoveTimer;
731 asciidoc.install();
732 /*]]>*/
733 </script>
734 </head>
735 <body class="manpage">
736 <div id="header">
737 <h1>
738 git-notes(1) Manual Page
739 </h1>
740 <h2>NAME</h2>
741 <div class="sectionbody">
742 <p>git-notes -
743 Add or inspect object notes
744 </p>
745 </div>
746 </div>
747 <div id="content">
748 <div class="sect1">
749 <h2 id="_synopsis">SYNOPSIS</h2>
750 <div class="sectionbody">
751 <div class="verseblock">
752 <pre class="content"><em>git notes</em> [list [&lt;object&gt;]]
753 <em>git notes</em> add [-f] [--allow-empty] [-F &lt;file&gt; | -m &lt;msg&gt; | (-c | -C) &lt;object&gt;] [&lt;object&gt;]
754 <em>git notes</em> copy [-f] ( --stdin | &lt;from-object&gt; [&lt;to-object&gt;] )
755 <em>git notes</em> append [--allow-empty] [-F &lt;file&gt; | -m &lt;msg&gt; | (-c | -C) &lt;object&gt;] [&lt;object&gt;]
756 <em>git notes</em> edit [--allow-empty] [&lt;object&gt;]
757 <em>git notes</em> show [&lt;object&gt;]
758 <em>git notes</em> merge [-v | -q] [-s &lt;strategy&gt; ] &lt;notes-ref&gt;
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] [&lt;object&gt;&#8230;]
762 <em>git notes</em> prune [-n] [-v]
763 <em>git notes</em> get-ref</pre>
764 <div class="attribution">
765 </div></div>
766 </div>
767 </div>
768 <div class="sect1">
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 (&lt;refname&gt;):" (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.&lt;command&gt;" configuration for a way to carry
789 notes across commands that rewrite commits.</p></div>
790 </div>
791 </div>
792 <div class="sect1">
793 <h2 id="_subcommands">SUBCOMMANDS</h2>
794 <div class="sectionbody">
795 <div class="dlist"><dl>
796 <dt class="hdlist1">
797 list
798 </dt>
799 <dd>
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 "&lt;note object&gt; &lt;annotated object&gt;").
804 This is the default subcommand if no subcommand is given.
805 </p>
806 </dd>
807 <dt class="hdlist1">
809 </dt>
810 <dd>
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&#8217;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).
818 </p>
819 </dd>
820 <dt class="hdlist1">
821 copy
822 </dt>
823 <dd>
825 Copy the notes for the first object onto the second object (defaults to
826 HEAD). Abort if the second object already has notes, or if the first
827 object has none (use -f to overwrite existing notes to the
828 second object). This subcommand is equivalent to:
829 <code>git notes add [-f] -C $(git notes list &lt;from-object&gt;) &lt;to-object&gt;</code>
830 </p>
831 <div class="paragraph"><p>In <code>--stdin</code> mode, take lines in the format</p></div>
832 <div class="listingblock">
833 <div class="content">
834 <pre><code>&lt;from-object&gt; SP &lt;to-object&gt; [ SP &lt;rest&gt; ] LF</code></pre>
835 </div></div>
836 <div class="paragraph"><p>on standard input, and copy the notes from each &lt;from-object&gt; to its
837 corresponding &lt;to-object&gt;. (The optional <code>&lt;rest&gt;</code> is ignored so that
838 the command can read the input given to the <code>post-rewrite</code> hook.)</p></div>
839 </dd>
840 <dt class="hdlist1">
841 append
842 </dt>
843 <dd>
845 Append to the notes of an existing object (defaults to HEAD).
846 Creates a new notes object if needed.
847 </p>
848 </dd>
849 <dt class="hdlist1">
850 edit
851 </dt>
852 <dd>
854 Edit the notes for a given object (defaults to HEAD).
855 </p>
856 </dd>
857 <dt class="hdlist1">
858 show
859 </dt>
860 <dd>
862 Show the notes for a given object (defaults to HEAD).
863 </p>
864 </dd>
865 <dt class="hdlist1">
866 merge
867 </dt>
868 <dd>
870 Merge the given notes ref into the current notes ref.
871 This will try to merge the changes made by the given
872 notes ref (called "remote") since the merge-base (if
873 any) into the current notes ref (called "local").
874 </p>
875 <div class="paragraph"><p>If conflicts arise and a strategy for automatically resolving
876 conflicting notes (see the "NOTES MERGE STRATEGIES" section) is not given,
877 the "manual" resolver is used. This resolver checks out the
878 conflicting notes in a special worktree (<code>.git/NOTES_MERGE_WORKTREE</code>),
879 and instructs the user to manually resolve the conflicts there.
880 When done, the user can either finalize the merge with
881 <em>git notes merge --commit</em>, or abort the merge with
882 <em>git notes merge --abort</em>.</p></div>
883 </dd>
884 <dt class="hdlist1">
885 remove
886 </dt>
887 <dd>
889 Remove the notes for given objects (defaults to HEAD). When
890 giving zero or one object from the command line, this is
891 equivalent to specifying an empty note message to
892 the <code>edit</code> subcommand.
893 </p>
894 </dd>
895 <dt class="hdlist1">
896 prune
897 </dt>
898 <dd>
900 Remove all notes for non-existing/unreachable objects.
901 </p>
902 </dd>
903 <dt class="hdlist1">
904 get-ref
905 </dt>
906 <dd>
908 Print the current notes ref. This provides an easy way to
909 retrieve the current notes ref (e.g. from scripts).
910 </p>
911 </dd>
912 </dl></div>
913 </div>
914 </div>
915 <div class="sect1">
916 <h2 id="_options">OPTIONS</h2>
917 <div class="sectionbody">
918 <div class="dlist"><dl>
919 <dt class="hdlist1">
921 </dt>
922 <dt class="hdlist1">
923 --force
924 </dt>
925 <dd>
927 When adding notes to an object that already has notes,
928 overwrite the existing notes (instead of aborting).
929 </p>
930 </dd>
931 <dt class="hdlist1">
932 -m &lt;msg&gt;
933 </dt>
934 <dt class="hdlist1">
935 --message=&lt;msg&gt;
936 </dt>
937 <dd>
939 Use the given note message (instead of prompting).
940 If multiple <code>-m</code> options are given, their values
941 are concatenated as separate paragraphs.
942 Lines starting with <code>#</code> and empty lines other than a
943 single line between paragraphs will be stripped out.
944 </p>
945 </dd>
946 <dt class="hdlist1">
947 -F &lt;file&gt;
948 </dt>
949 <dt class="hdlist1">
950 --file=&lt;file&gt;
951 </dt>
952 <dd>
954 Take the note message from the given file. Use <em>-</em> to
955 read the note message from the standard input.
956 Lines starting with <code>#</code> and empty lines other than a
957 single line between paragraphs will be stripped out.
958 </p>
959 </dd>
960 <dt class="hdlist1">
961 -C &lt;object&gt;
962 </dt>
963 <dt class="hdlist1">
964 --reuse-message=&lt;object&gt;
965 </dt>
966 <dd>
968 Take the given blob object (for example, another note) as the
969 note message. (Use <code>git notes copy &lt;object&gt;</code> instead to
970 copy notes between objects.)
971 </p>
972 </dd>
973 <dt class="hdlist1">
974 -c &lt;object&gt;
975 </dt>
976 <dt class="hdlist1">
977 --reedit-message=&lt;object&gt;
978 </dt>
979 <dd>
981 Like <em>-C</em>, but with <code>-c</code> the editor is invoked, so that
982 the user can further edit the note message.
983 </p>
984 </dd>
985 <dt class="hdlist1">
986 --allow-empty
987 </dt>
988 <dd>
990 Allow an empty note object to be stored. The default behavior is
991 to automatically remove empty notes.
992 </p>
993 </dd>
994 <dt class="hdlist1">
995 --ref &lt;ref&gt;
996 </dt>
997 <dd>
999 Manipulate the notes tree in &lt;ref&gt;. This overrides
1000 <code>GIT_NOTES_REF</code> and the "core.notesRef" configuration. The ref
1001 specifies the full refname when it begins with <code>refs/notes/</code>; when it
1002 begins with <code>notes/</code>, <code>refs/</code> and otherwise <code>refs/notes/</code> is prefixed
1003 to form a full name of the ref.
1004 </p>
1005 </dd>
1006 <dt class="hdlist1">
1007 --ignore-missing
1008 </dt>
1009 <dd>
1011 Do not consider it an error to request removing notes from an
1012 object that does not have notes attached to it.
1013 </p>
1014 </dd>
1015 <dt class="hdlist1">
1016 --stdin
1017 </dt>
1018 <dd>
1020 Also read the object names to remove notes from the standard
1021 input (there is no reason you cannot combine this with object
1022 names from the command line).
1023 </p>
1024 </dd>
1025 <dt class="hdlist1">
1027 </dt>
1028 <dt class="hdlist1">
1029 --dry-run
1030 </dt>
1031 <dd>
1033 Do not remove anything; just report the object names whose notes
1034 would be removed.
1035 </p>
1036 </dd>
1037 <dt class="hdlist1">
1038 -s &lt;strategy&gt;
1039 </dt>
1040 <dt class="hdlist1">
1041 --strategy=&lt;strategy&gt;
1042 </dt>
1043 <dd>
1045 When merging notes, resolve notes conflicts using the given
1046 strategy. The following strategies are recognized: "manual"
1047 (default), "ours", "theirs", "union" and "cat_sort_uniq".
1048 This option overrides the "notes.mergeStrategy" configuration setting.
1049 See the "NOTES MERGE STRATEGIES" section below for more
1050 information on each notes merge strategy.
1051 </p>
1052 </dd>
1053 <dt class="hdlist1">
1054 --commit
1055 </dt>
1056 <dd>
1058 Finalize an in-progress <em>git notes merge</em>. Use this option
1059 when you have resolved the conflicts that <em>git notes merge</em>
1060 stored in .git/NOTES_MERGE_WORKTREE. This amends the partial
1061 merge commit created by <em>git notes merge</em> (stored in
1062 .git/NOTES_MERGE_PARTIAL) by adding the notes in
1063 .git/NOTES_MERGE_WORKTREE. The notes ref stored in the
1064 .git/NOTES_MERGE_REF symref is updated to the resulting commit.
1065 </p>
1066 </dd>
1067 <dt class="hdlist1">
1068 --abort
1069 </dt>
1070 <dd>
1072 Abort/reset an in-progress <em>git notes merge</em>, i.e. a notes merge
1073 with conflicts. This simply removes all files related to the
1074 notes merge.
1075 </p>
1076 </dd>
1077 <dt class="hdlist1">
1079 </dt>
1080 <dt class="hdlist1">
1081 --quiet
1082 </dt>
1083 <dd>
1085 When merging notes, operate quietly.
1086 </p>
1087 </dd>
1088 <dt class="hdlist1">
1090 </dt>
1091 <dt class="hdlist1">
1092 --verbose
1093 </dt>
1094 <dd>
1096 When merging notes, be more verbose.
1097 When pruning notes, report all object names whose notes are
1098 removed.
1099 </p>
1100 </dd>
1101 </dl></div>
1102 </div>
1103 </div>
1104 <div class="sect1">
1105 <h2 id="_discussion">DISCUSSION</h2>
1106 <div class="sectionbody">
1107 <div class="paragraph"><p>Commit notes are blobs containing extra information about an object
1108 (usually information to supplement a commit&#8217;s message). These blobs
1109 are taken from notes refs. A notes ref is usually a branch which
1110 contains "files" whose paths are the object names for the objects
1111 they describe, with some directory separators included for performance
1112 reasons <span class="footnote"><br />[Permitted pathnames have the form
1113 <em>bf</em><code>/</code><em>fe</em><code>/</code><em>30</em><code>/</code><em>&#8230;</em><code>/</code><em>680d5a&#8230;</em>: a sequence of directory
1114 names of two hexadecimal digits each followed by a filename with the
1115 rest of the object ID.]<br /></span>.</p></div>
1116 <div class="paragraph"><p>Every notes change creates a new commit at the specified notes ref.
1117 You can therefore inspect the history of the notes by invoking, e.g.,
1118 <code>git log -p notes/commits</code>. Currently the commit message only records
1119 which operation triggered the update, and the commit authorship is
1120 determined according to the usual rules (see <a href="git-commit.html">git-commit(1)</a>).
1121 These details may change in the future.</p></div>
1122 <div class="paragraph"><p>It is also permitted for a notes ref to point directly to a tree
1123 object, in which case the history of the notes can be read with
1124 <code>git log -p -g &lt;refname&gt;</code>.</p></div>
1125 </div>
1126 </div>
1127 <div class="sect1">
1128 <h2 id="_notes_merge_strategies">NOTES MERGE STRATEGIES</h2>
1129 <div class="sectionbody">
1130 <div class="paragraph"><p>The default notes merge strategy is "manual", which checks out
1131 conflicting notes in a special work tree for resolving notes conflicts
1132 (<code>.git/NOTES_MERGE_WORKTREE</code>), and instructs the user to resolve the
1133 conflicts in that work tree.
1134 When done, the user can either finalize the merge with
1135 <em>git notes merge --commit</em>, or abort the merge with
1136 <em>git notes merge --abort</em>.</p></div>
1137 <div class="paragraph"><p>Users may select an automated merge strategy from among the following using
1138 either -s/--strategy option or configuring notes.mergeStrategy accordingly:</p></div>
1139 <div class="paragraph"><p>"ours" automatically resolves conflicting notes in favor of the local
1140 version (i.e. the current notes ref).</p></div>
1141 <div class="paragraph"><p>"theirs" automatically resolves notes conflicts in favor of the remote
1142 version (i.e. the given notes ref being merged into the current notes
1143 ref).</p></div>
1144 <div class="paragraph"><p>"union" automatically resolves notes conflicts by concatenating the
1145 local and remote versions.</p></div>
1146 <div class="paragraph"><p>"cat_sort_uniq" is similar to "union", but in addition to concatenating
1147 the local and remote versions, this strategy also sorts the resulting
1148 lines, and removes duplicate lines from the result. This is equivalent
1149 to applying the "cat | sort | uniq" shell pipeline to the local and
1150 remote versions. This strategy is useful if the notes follow a line-based
1151 format where one wants to avoid duplicated lines in the merge result.
1152 Note that if either the local or remote version contain duplicate lines
1153 prior to the merge, these will also be removed by this notes merge
1154 strategy.</p></div>
1155 </div>
1156 </div>
1157 <div class="sect1">
1158 <h2 id="_examples">EXAMPLES</h2>
1159 <div class="sectionbody">
1160 <div class="paragraph"><p>You can use notes to add annotations with information that was not
1161 available at the time a commit was written.</p></div>
1162 <div class="listingblock">
1163 <div class="content">
1164 <pre><code>$ git notes add -m 'Tested-by: Johannes Sixt &lt;j6t@kdbg.org&gt;' 72a144e2
1165 $ git show -s 72a144e
1166 [...]
1167 Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
1169 Notes:
1170 Tested-by: Johannes Sixt &lt;j6t@kdbg.org&gt;</code></pre>
1171 </div></div>
1172 <div class="paragraph"><p>In principle, a note is a regular Git blob, and any kind of
1173 (non-)format is accepted. You can binary-safely create notes from
1174 arbitrary files using <em>git hash-object</em>:</p></div>
1175 <div class="listingblock">
1176 <div class="content">
1177 <pre><code>$ cc *.c
1178 $ blob=$(git hash-object -w a.out)
1179 $ git notes --ref=built add --allow-empty -C "$blob" HEAD</code></pre>
1180 </div></div>
1181 <div class="paragraph"><p>(You cannot simply use <code>git notes --ref=built add -F a.out HEAD</code>
1182 because that is not binary-safe.)
1183 Of course, it doesn&#8217;t make much sense to display non-text-format notes
1184 with <em>git log</em>, so if you use such notes, you&#8217;ll probably need to write
1185 some special-purpose tools to do something useful with them.</p></div>
1186 </div>
1187 </div>
1188 <div class="sect1">
1189 <h2 id="CONFIGURATION">CONFIGURATION</h2>
1190 <div class="sectionbody">
1191 <div class="dlist"><dl>
1192 <dt class="hdlist1">
1193 core.notesRef
1194 </dt>
1195 <dd>
1197 Notes ref to read and manipulate instead of
1198 <code>refs/notes/commits</code>. Must be an unabbreviated ref name.
1199 This setting can be overridden through the environment and
1200 command line.
1201 </p>
1202 </dd>
1203 </dl></div>
1204 <div class="paragraph"><p>Everything above this line in this section isn&#8217;t included from the
1205 <a href="git-config.html">git-config(1)</a> documentation. The content that follows is the
1206 same as what&#8217;s found there:</p></div>
1207 <div class="dlist"><dl>
1208 <dt class="hdlist1">
1209 notes.mergeStrategy
1210 </dt>
1211 <dd>
1213 Which merge strategy to choose by default when resolving notes
1214 conflicts. Must be one of <code>manual</code>, <code>ours</code>, <code>theirs</code>, <code>union</code>, or
1215 <code>cat_sort_uniq</code>. Defaults to <code>manual</code>. See "NOTES MERGE STRATEGIES"
1216 section of <a href="git-notes.html">git-notes(1)</a> for more information on each strategy.
1217 </p>
1218 <div class="paragraph"><p>This setting can be overridden by passing the <code>--strategy</code> option to
1219 <a href="git-notes.html">git-notes(1)</a>.</p></div>
1220 </dd>
1221 <dt class="hdlist1">
1222 notes.&lt;name&gt;.mergeStrategy
1223 </dt>
1224 <dd>
1226 Which merge strategy to choose when doing a notes merge into
1227 refs/notes/&lt;name&gt;. This overrides the more general
1228 "notes.mergeStrategy". See the "NOTES MERGE STRATEGIES" section in
1229 <a href="git-notes.html">git-notes(1)</a> for more information on the available strategies.
1230 </p>
1231 </dd>
1232 <dt class="hdlist1">
1233 notes.displayRef
1234 </dt>
1235 <dd>
1237 Which ref (or refs, if a glob or specified more than once), in
1238 addition to the default set by <code>core.notesRef</code> or
1239 <code>GIT_NOTES_REF</code>, to read notes from when showing commit
1240 messages with the <em>git log</em> family of commands.
1241 </p>
1242 <div class="paragraph"><p>This setting can be overridden with the <code>GIT_NOTES_DISPLAY_REF</code>
1243 environment variable, which must be a colon separated list of refs or
1244 globs.</p></div>
1245 <div class="paragraph"><p>A warning will be issued for refs that do not exist,
1246 but a glob that does not match any refs is silently ignored.</p></div>
1247 <div class="paragraph"><p>This setting can be disabled by the <code>--no-notes</code> option to the <em>git
1248 log</em> family of commands, or by the <code>--notes=&lt;ref&gt;</code> option accepted by
1249 those commands.</p></div>
1250 <div class="paragraph"><p>The effective value of "core.notesRef" (possibly overridden by
1251 GIT_NOTES_REF) is also implicitly added to the list of refs to be
1252 displayed.</p></div>
1253 </dd>
1254 <dt class="hdlist1">
1255 notes.rewrite.&lt;command&gt;
1256 </dt>
1257 <dd>
1259 When rewriting commits with &lt;command&gt; (currently <code>amend</code> or
1260 <code>rebase</code>), if this variable is <code>false</code>, git will not copy
1261 notes from the original to the rewritten commit. Defaults to
1262 <code>true</code>. See also "<code>notes.rewriteRef</code>" below.
1263 </p>
1264 <div class="paragraph"><p>This setting can be overridden with the <code>GIT_NOTES_REWRITE_REF</code>
1265 environment variable, which must be a colon separated list of refs or
1266 globs.</p></div>
1267 </dd>
1268 <dt class="hdlist1">
1269 notes.rewriteMode
1270 </dt>
1271 <dd>
1273 When copying notes during a rewrite (see the
1274 "notes.rewrite.&lt;command&gt;" option), determines what to do if
1275 the target commit already has a note. Must be one of
1276 <code>overwrite</code>, <code>concatenate</code>, <code>cat_sort_uniq</code>, or <code>ignore</code>.
1277 Defaults to <code>concatenate</code>.
1278 </p>
1279 <div class="paragraph"><p>This setting can be overridden with the <code>GIT_NOTES_REWRITE_MODE</code>
1280 environment variable.</p></div>
1281 </dd>
1282 <dt class="hdlist1">
1283 notes.rewriteRef
1284 </dt>
1285 <dd>
1287 When copying notes during a rewrite, specifies the (fully
1288 qualified) ref whose notes should be copied. May be a glob,
1289 in which case notes in all matching refs will be copied. You
1290 may also specify this configuration several times.
1291 </p>
1292 <div class="paragraph"><p>Does not have a default value; you must configure this variable to
1293 enable note rewriting. Set it to <code>refs/notes/commits</code> to enable
1294 rewriting for the default commit notes.</p></div>
1295 <div class="paragraph"><p>Can be overridden with the <code>GIT_NOTES_REWRITE_REF</code> environment variable.
1296 See <code>notes.rewrite.&lt;command&gt;</code> above for a further description of its format.</p></div>
1297 </dd>
1298 </dl></div>
1299 </div>
1300 </div>
1301 <div class="sect1">
1302 <h2 id="_environment">ENVIRONMENT</h2>
1303 <div class="sectionbody">
1304 <div class="dlist"><dl>
1305 <dt class="hdlist1">
1306 <code>GIT_NOTES_REF</code>
1307 </dt>
1308 <dd>
1310 Which ref to manipulate notes from, instead of <code>refs/notes/commits</code>.
1311 This overrides the <code>core.notesRef</code> setting.
1312 </p>
1313 </dd>
1314 <dt class="hdlist1">
1315 <code>GIT_NOTES_DISPLAY_REF</code>
1316 </dt>
1317 <dd>
1319 Colon-delimited list of refs or globs indicating which refs,
1320 in addition to the default from <code>core.notesRef</code> or
1321 <code>GIT_NOTES_REF</code>, to read notes from when showing commit
1322 messages.
1323 This overrides the <code>notes.displayRef</code> setting.
1324 </p>
1325 <div class="paragraph"><p>A warning will be issued for refs that do not exist, but a glob that
1326 does not match any refs is silently ignored.</p></div>
1327 </dd>
1328 <dt class="hdlist1">
1329 <code>GIT_NOTES_REWRITE_MODE</code>
1330 </dt>
1331 <dd>
1333 When copying notes during a rewrite, what to do if the target
1334 commit already has a note.
1335 Must be one of <code>overwrite</code>, <code>concatenate</code>, <code>cat_sort_uniq</code>, or <code>ignore</code>.
1336 This overrides the <code>core.rewriteMode</code> setting.
1337 </p>
1338 </dd>
1339 <dt class="hdlist1">
1340 <code>GIT_NOTES_REWRITE_REF</code>
1341 </dt>
1342 <dd>
1344 When rewriting commits, which notes to copy from the original
1345 to the rewritten commit. Must be a colon-delimited list of
1346 refs or globs.
1347 </p>
1348 <div class="paragraph"><p>If not set in the environment, the list of notes to copy depends
1349 on the <code>notes.rewrite.&lt;command&gt;</code> and <code>notes.rewriteRef</code> settings.</p></div>
1350 </dd>
1351 </dl></div>
1352 </div>
1353 </div>
1354 <div class="sect1">
1355 <h2 id="_git">GIT</h2>
1356 <div class="sectionbody">
1357 <div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
1358 </div>
1359 </div>
1360 </div>
1361 <div id="footnotes"><hr /></div>
1362 <div id="footer">
1363 <div id="footer-text">
1364 Last updated
1365 2022-09-14 13:23:11 PDT
1366 </div>
1367 </div>
1368 </body>
1369 </html>