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] [-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] [-F
<file
> | -m
<msg
> | (-c | -C)
<object
>] [
<object
>]
756 <em>git notes
</em> edit [--allow-empty] [
<object
>]
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>
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
<from-object
>)
<to-object
></code>
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><from-object
> SP
<to-object
> [ SP
<rest
> ] LF
</code></pre>
836 <div class=
"paragraph"><p>on standard input, and copy the notes from each
<from-object
> to its
837 corresponding
<to-object
>. (The optional
<code><rest
></code> is ignored so that
838 the command can read the input given to the
<code>post-rewrite
</code> hook.)
</p></div>
845 Append to the notes of an existing object (defaults to HEAD).
846 Creates a new notes object if needed.
854 Edit the notes for a given object (defaults to HEAD).
862 Show the notes for a given object (defaults to HEAD).
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").
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>
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.
900 Remove all notes for non-existing/unreachable objects.
908 Print the current notes ref. This provides an easy way to
909 retrieve the current notes ref (e.g. from scripts).
916 <h2 id=
"_options">OPTIONS
</h2>
917 <div class=
"sectionbody">
918 <div class=
"dlist"><dl>
927 When adding notes to an object that already has notes,
928 overwrite the existing notes (instead of aborting).
935 --message=
<msg
>
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.
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.
964 --reuse-message=
<object
>
968 Take the given blob object (for example, another note) as the
969 note message. (Use
<code>git notes copy
<object
></code> instead to
970 copy notes between objects.)
977 --reedit-message=
<object
>
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.
990 Allow an empty note object to be stored. The default behavior is
991 to automatically remove empty notes.
999 Manipulate the notes tree in
<ref
>. 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.
1006 <dt class=
"hdlist1">
1011 Do not consider it an error to request removing notes from an
1012 object that does not have notes attached to it.
1015 <dt class=
"hdlist1">
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).
1025 <dt class=
"hdlist1">
1028 <dt class=
"hdlist1">
1033 Do not remove anything; just report the object names whose notes
1037 <dt class=
"hdlist1">
1040 <dt class=
"hdlist1">
1041 --strategy=
<strategy
>
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.
1053 <dt class=
"hdlist1">
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.
1067 <dt class=
"hdlist1">
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
1077 <dt class=
"hdlist1">
1080 <dt class=
"hdlist1">
1085 When merging notes, operate quietly.
1088 <dt class=
"hdlist1">
1091 <dt class=
"hdlist1">
1096 When merging notes, be more verbose.
1097 When pruning notes, report all object names whose notes are
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
’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>…</em><code>/
</code><em>680d5a
…</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
<refname
></code>.
</p></div>
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
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
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
<j6t@kdbg.org
>'
72a144e2
1165 $ git show -s
72a144e
1167 Signed-off-by: Junio C Hamano
<gitster@pobox.com
>
1170 Tested-by: Johannes Sixt
<j6t@kdbg.org
></code></pre>
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">
1178 $ blob=$(git hash-object -w a.out)
1179 $ git notes --ref=built add --allow-empty -C
"$blob" HEAD
</code></pre>
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
’t make much sense to display non-text-format notes
1184 with
<em>git log
</em>, so if you use such notes, you
’ll probably need to write
1185 some special-purpose tools to do something useful with them.
</p></div>
1189 <h2 id=
"CONFIGURATION">CONFIGURATION
</h2>
1190 <div class=
"sectionbody">
1191 <div class=
"dlist"><dl>
1192 <dt class=
"hdlist1">
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
1204 <div class=
"paragraph"><p>Everything above this line in this section isn
’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
’s found there:
</p></div>
1207 <div class=
"dlist"><dl>
1208 <dt class=
"hdlist1">
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.
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>
1221 <dt class=
"hdlist1">
1222 notes.
<name
>.mergeStrategy
1226 Which merge strategy to choose when doing a notes merge into
1227 refs/notes/
<name
>. 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.
1232 <dt class=
"hdlist1">
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.
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
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=
<ref
></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>
1254 <dt class=
"hdlist1">
1255 notes.rewrite.
<command
>
1259 When rewriting commits with
<command
> (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.
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
1268 <dt class=
"hdlist1">
1273 When copying notes during a rewrite (see the
1274 "notes.rewrite.<command>" 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>.
1279 <div class=
"paragraph"><p>This setting can be overridden with the
<code>GIT_NOTES_REWRITE_MODE
</code>
1280 environment variable.
</p></div>
1282 <dt class=
"hdlist1">
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.
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.
<command
></code> above for a further description of its format.
</p></div>
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>
1310 Which ref to manipulate notes from, instead of
<code>refs/notes/commits
</code>.
1311 This overrides the
<code>core.notesRef
</code> setting.
1314 <dt class=
"hdlist1">
1315 <code>GIT_NOTES_DISPLAY_REF
</code>
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
1323 This overrides the
<code>notes.displayRef
</code> setting.
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>
1328 <dt class=
"hdlist1">
1329 <code>GIT_NOTES_REWRITE_MODE
</code>
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.
1339 <dt class=
"hdlist1">
1340 <code>GIT_NOTES_REWRITE_REF
</code>
1344 When rewriting commits, which notes to copy from the original
1345 to the rewritten commit. Must be a colon-delimited list of
1348 <div class=
"paragraph"><p>If not set in the environment, the list of notes to copy depends
1349 on the
<code>notes.rewrite.
<command
></code> and
<code>notes.rewriteRef
</code> settings.
</p></div>
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>
1361 <div id=
"footnotes"><hr /></div>
1363 <div id=
"footer-text">
1365 2022-
09-
14 13:
23:
11 PDT