Autogenerated HTML docs for v2.44.0-rc0-46-g2996f
[git-htmldocs.git] / git-notes.html
blob686769eea27073c31e79a643fcbe06d047174d37
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] [--[no-]separator | --separator=&lt;paragraph-break&gt;] [--[no-]stripspace] [-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] [--[no-]separator | --separator=&lt;paragraph-break&gt;] [--[no-]stripspace] [-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;] [--[no-]stripspace]
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). 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.
820 </p>
821 </dd>
822 <dt class="hdlist1">
823 copy
824 </dt>
825 <dd>
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 &lt;from-object&gt;) &lt;to-object&gt;</code>
832 </p>
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>&lt;from-object&gt; SP &lt;to-object&gt; [ SP &lt;rest&gt; ] LF</code></pre>
837 </div></div>
838 <div class="paragraph"><p>on standard input, and copy the notes from each &lt;from-object&gt; to its
839 corresponding &lt;to-object&gt;. (The optional <code>&lt;rest&gt;</code> is ignored so that
840 the command can read the input given to the <code>post-rewrite</code> hook.)</p></div>
841 </dd>
842 <dt class="hdlist1">
843 append
844 </dt>
845 <dd>
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.
853 </p>
854 </dd>
855 <dt class="hdlist1">
856 edit
857 </dt>
858 <dd>
860 Edit the notes for a given object (defaults to HEAD).
861 </p>
862 </dd>
863 <dt class="hdlist1">
864 show
865 </dt>
866 <dd>
868 Show the notes for a given object (defaults to HEAD).
869 </p>
870 </dd>
871 <dt class="hdlist1">
872 merge
873 </dt>
874 <dd>
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").
880 </p>
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>
889 </dd>
890 <dt class="hdlist1">
891 remove
892 </dt>
893 <dd>
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.
899 </p>
900 </dd>
901 <dt class="hdlist1">
902 prune
903 </dt>
904 <dd>
906 Remove all notes for non-existing/unreachable objects.
907 </p>
908 </dd>
909 <dt class="hdlist1">
910 get-ref
911 </dt>
912 <dd>
914 Print the current notes ref. This provides an easy way to
915 retrieve the current notes ref (e.g. from scripts).
916 </p>
917 </dd>
918 </dl></div>
919 </div>
920 </div>
921 <div class="sect1">
922 <h2 id="_options">OPTIONS</h2>
923 <div class="sectionbody">
924 <div class="dlist"><dl>
925 <dt class="hdlist1">
927 </dt>
928 <dt class="hdlist1">
929 --force
930 </dt>
931 <dd>
933 When adding notes to an object that already has notes,
934 overwrite the existing notes (instead of aborting).
935 </p>
936 </dd>
937 <dt class="hdlist1">
938 -m &lt;msg&gt;
939 </dt>
940 <dt class="hdlist1">
941 --message=&lt;msg&gt;
942 </dt>
943 <dd>
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>.
951 </p>
952 </dd>
953 <dt class="hdlist1">
954 -F &lt;file&gt;
955 </dt>
956 <dt class="hdlist1">
957 --file=&lt;file&gt;
958 </dt>
959 <dd>
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>.
966 </p>
967 </dd>
968 <dt class="hdlist1">
969 -C &lt;object&gt;
970 </dt>
971 <dt class="hdlist1">
972 --reuse-message=&lt;object&gt;
973 </dt>
974 <dd>
976 Take the given blob object (for example, another note) as the
977 note message. (Use <code>git notes copy &lt;object&gt;</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.
982 </p>
983 </dd>
984 <dt class="hdlist1">
985 -c &lt;object&gt;
986 </dt>
987 <dt class="hdlist1">
988 --reedit-message=&lt;object&gt;
989 </dt>
990 <dd>
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.
994 </p>
995 </dd>
996 <dt class="hdlist1">
997 --allow-empty
998 </dt>
999 <dd>
1001 Allow an empty note object to be stored. The default behavior is
1002 to automatically remove empty notes.
1003 </p>
1004 </dd>
1005 <dt class="hdlist1">
1006 --[no-]separator, --separator=&lt;paragraph-break&gt;
1007 </dt>
1008 <dd>
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
1013 line.
1014 </p>
1015 </dd>
1016 <dt class="hdlist1">
1017 --[no-]stripspace
1018 </dt>
1019 <dd>
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.
1026 </p>
1027 </dd>
1028 <dt class="hdlist1">
1029 --ref &lt;ref&gt;
1030 </dt>
1031 <dd>
1033 Manipulate the notes tree in &lt;ref&gt;. 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.
1038 </p>
1039 </dd>
1040 <dt class="hdlist1">
1041 --ignore-missing
1042 </dt>
1043 <dd>
1045 Do not consider it an error to request removing notes from an
1046 object that does not have notes attached to it.
1047 </p>
1048 </dd>
1049 <dt class="hdlist1">
1050 --stdin
1051 </dt>
1052 <dd>
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).
1057 </p>
1058 </dd>
1059 <dt class="hdlist1">
1061 </dt>
1062 <dt class="hdlist1">
1063 --dry-run
1064 </dt>
1065 <dd>
1067 Do not remove anything; just report the object names whose notes
1068 would be removed.
1069 </p>
1070 </dd>
1071 <dt class="hdlist1">
1072 -s &lt;strategy&gt;
1073 </dt>
1074 <dt class="hdlist1">
1075 --strategy=&lt;strategy&gt;
1076 </dt>
1077 <dd>
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.
1085 </p>
1086 </dd>
1087 <dt class="hdlist1">
1088 --commit
1089 </dt>
1090 <dd>
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.
1099 </p>
1100 </dd>
1101 <dt class="hdlist1">
1102 --abort
1103 </dt>
1104 <dd>
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
1108 notes merge.
1109 </p>
1110 </dd>
1111 <dt class="hdlist1">
1113 </dt>
1114 <dt class="hdlist1">
1115 --quiet
1116 </dt>
1117 <dd>
1119 When merging notes, operate quietly.
1120 </p>
1121 </dd>
1122 <dt class="hdlist1">
1124 </dt>
1125 <dt class="hdlist1">
1126 --verbose
1127 </dt>
1128 <dd>
1130 When merging notes, be more verbose.
1131 When pruning notes, report all object names whose notes are
1132 removed.
1133 </p>
1134 </dd>
1135 </dl></div>
1136 </div>
1137 </div>
1138 <div class="sect1">
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&#8217;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>&#8230;</em><code>/</code><em>680d5a&#8230;</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 &lt;refname&gt;</code>.</p></div>
1159 </div>
1160 </div>
1161 <div class="sect1">
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
1177 ref).</p></div>
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
1188 strategy.</p></div>
1189 </div>
1190 </div>
1191 <div class="sect1">
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 &lt;j6t@kdbg.org&gt;' 72a144e2
1199 $ git show -s 72a144e
1200 [...]
1201 Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
1203 Notes:
1204 Tested-by: Johannes Sixt &lt;j6t@kdbg.org&gt;</code></pre>
1205 </div></div>
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">
1211 <pre><code>$ cc *.c
1212 $ blob=$(git hash-object -w a.out)
1213 $ git notes --ref=built add --allow-empty -C "$blob" HEAD</code></pre>
1214 </div></div>
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&#8217;t make much sense to display non-text-format notes
1218 with <em>git log</em>, so if you use such notes, you&#8217;ll probably need to write
1219 some special-purpose tools to do something useful with them.</p></div>
1220 </div>
1221 </div>
1222 <div class="sect1">
1223 <h2 id="CONFIGURATION">CONFIGURATION</h2>
1224 <div class="sectionbody">
1225 <div class="dlist"><dl>
1226 <dt class="hdlist1">
1227 core.notesRef
1228 </dt>
1229 <dd>
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
1234 command line.
1235 </p>
1236 </dd>
1237 </dl></div>
1238 <div class="paragraph"><p>Everything above this line in this section isn&#8217;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&#8217;s found there:</p></div>
1241 <div class="dlist"><dl>
1242 <dt class="hdlist1">
1243 notes.mergeStrategy
1244 </dt>
1245 <dd>
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.
1251 </p>
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>
1254 </dd>
1255 <dt class="hdlist1">
1256 notes.&lt;name&gt;.mergeStrategy
1257 </dt>
1258 <dd>
1260 Which merge strategy to choose when doing a notes merge into
1261 refs/notes/&lt;name&gt;. 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.
1264 </p>
1265 </dd>
1266 <dt class="hdlist1">
1267 notes.displayRef
1268 </dt>
1269 <dd>
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.
1275 </p>
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
1278 globs.</p></div>
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=&lt;ref&gt;</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>
1287 </dd>
1288 <dt class="hdlist1">
1289 notes.rewrite.&lt;command&gt;
1290 </dt>
1291 <dd>
1293 When rewriting commits with &lt;command&gt; (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.
1297 </p>
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
1300 globs.</p></div>
1301 </dd>
1302 <dt class="hdlist1">
1303 notes.rewriteMode
1304 </dt>
1305 <dd>
1307 When copying notes during a rewrite (see the
1308 "notes.rewrite.&lt;command&gt;" 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>.
1312 </p>
1313 <div class="paragraph"><p>This setting can be overridden with the <code>GIT_NOTES_REWRITE_MODE</code>
1314 environment variable.</p></div>
1315 </dd>
1316 <dt class="hdlist1">
1317 notes.rewriteRef
1318 </dt>
1319 <dd>
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.
1325 </p>
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.&lt;command&gt;</code> above for a further description of its format.</p></div>
1331 </dd>
1332 </dl></div>
1333 </div>
1334 </div>
1335 <div class="sect1">
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>
1341 </dt>
1342 <dd>
1344 Which ref to manipulate notes from, instead of <code>refs/notes/commits</code>.
1345 This overrides the <code>core.notesRef</code> setting.
1346 </p>
1347 </dd>
1348 <dt class="hdlist1">
1349 <code>GIT_NOTES_DISPLAY_REF</code>
1350 </dt>
1351 <dd>
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
1356 messages.
1357 This overrides the <code>notes.displayRef</code> setting.
1358 </p>
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>
1361 </dd>
1362 <dt class="hdlist1">
1363 <code>GIT_NOTES_REWRITE_MODE</code>
1364 </dt>
1365 <dd>
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.
1371 </p>
1372 </dd>
1373 <dt class="hdlist1">
1374 <code>GIT_NOTES_REWRITE_REF</code>
1375 </dt>
1376 <dd>
1378 When rewriting commits, which notes to copy from the original
1379 to the rewritten commit. Must be a colon-delimited list of
1380 refs or globs.
1381 </p>
1382 <div class="paragraph"><p>If not set in the environment, the list of notes to copy depends
1383 on the <code>notes.rewrite.&lt;command&gt;</code> and <code>notes.rewriteRef</code> settings.</p></div>
1384 </dd>
1385 </dl></div>
1386 </div>
1387 </div>
1388 <div class="sect1">
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>
1392 </div>
1393 </div>
1394 </div>
1395 <div id="footnotes"><hr /></div>
1396 <div id="footer">
1397 <div id="footer-text">
1398 Last updated
1399 2024-02-08 15:45:59 PST
1400 </div>
1401 </div>
1402 </body>
1403 </html>