Autogenerated HTML docs for v1.7.7-325-g05f6ed
[git/jnareb-git.git] / gitrevisions.html
blob7769c71022c617b9ec1acdeecedd0f53e6ea3496
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <meta name="generator" content="AsciiDoc 8.5.2" />
7 <title>gitrevisions(7)</title>
8 <style type="text/css">
9 /* Debug borders */
10 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
12 border: 1px solid red;
16 body {
17 margin: 1em 5% 1em 5%;
20 a {
21 color: blue;
22 text-decoration: underline;
24 a:visited {
25 color: fuchsia;
28 em {
29 font-style: italic;
30 color: navy;
33 strong {
34 font-weight: bold;
35 color: #083194;
38 tt {
39 color: navy;
42 h1, h2, h3, h4, h5, h6 {
43 color: #527bbd;
44 font-family: sans-serif;
45 margin-top: 1.2em;
46 margin-bottom: 0.5em;
47 line-height: 1.3;
50 h1, h2, h3 {
51 border-bottom: 2px solid silver;
53 h2 {
54 padding-top: 0.5em;
56 h3 {
57 float: left;
59 h3 + * {
60 clear: left;
63 div.sectionbody {
64 font-family: serif;
65 margin-left: 0;
68 hr {
69 border: 1px solid silver;
72 p {
73 margin-top: 0.5em;
74 margin-bottom: 0.5em;
77 ul, ol, li > p {
78 margin-top: 0;
81 pre {
82 padding: 0;
83 margin: 0;
86 span#author {
87 color: #527bbd;
88 font-family: sans-serif;
89 font-weight: bold;
90 font-size: 1.1em;
92 span#email {
94 span#revnumber, span#revdate, span#revremark {
95 font-family: sans-serif;
98 div#footer {
99 font-family: sans-serif;
100 font-size: small;
101 border-top: 2px solid silver;
102 padding-top: 0.5em;
103 margin-top: 4.0em;
105 div#footer-text {
106 float: left;
107 padding-bottom: 0.5em;
109 div#footer-badges {
110 float: right;
111 padding-bottom: 0.5em;
114 div#preamble {
115 margin-top: 1.5em;
116 margin-bottom: 1.5em;
118 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
119 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
120 div.admonitionblock {
121 margin-top: 1.0em;
122 margin-bottom: 1.5em;
124 div.admonitionblock {
125 margin-top: 2.0em;
126 margin-bottom: 2.0em;
127 margin-right: 10%;
128 color: #606060;
131 div.content { /* Block element content. */
132 padding: 0;
135 /* Block element titles. */
136 div.title, caption.title {
137 color: #527bbd;
138 font-family: sans-serif;
139 font-weight: bold;
140 text-align: left;
141 margin-top: 1.0em;
142 margin-bottom: 0.5em;
144 div.title + * {
145 margin-top: 0;
148 td div.title:first-child {
149 margin-top: 0.0em;
151 div.content div.title:first-child {
152 margin-top: 0.0em;
154 div.content + div.title {
155 margin-top: 0.0em;
158 div.sidebarblock > div.content {
159 background: #ffffee;
160 border: 1px solid silver;
161 padding: 0.5em;
164 div.listingblock > div.content {
165 border: 1px solid silver;
166 background: #f4f4f4;
167 padding: 0.5em;
170 div.quoteblock, div.verseblock {
171 padding-left: 1.0em;
172 margin-left: 1.0em;
173 margin-right: 10%;
174 border-left: 5px solid #dddddd;
175 color: #777777;
178 div.quoteblock > div.attribution {
179 padding-top: 0.5em;
180 text-align: right;
183 div.verseblock > div.content {
184 white-space: pre;
186 div.verseblock > div.attribution {
187 padding-top: 0.75em;
188 text-align: left;
190 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
191 div.verseblock + div.attribution {
192 text-align: left;
195 div.admonitionblock .icon {
196 vertical-align: top;
197 font-size: 1.1em;
198 font-weight: bold;
199 text-decoration: underline;
200 color: #527bbd;
201 padding-right: 0.5em;
203 div.admonitionblock td.content {
204 padding-left: 0.5em;
205 border-left: 3px solid #dddddd;
208 div.exampleblock > div.content {
209 border-left: 3px solid #dddddd;
210 padding-left: 0.5em;
213 div.imageblock div.content { padding-left: 0; }
214 span.image img { border-style: none; }
215 a.image:visited { color: white; }
217 dl {
218 margin-top: 0.8em;
219 margin-bottom: 0.8em;
221 dt {
222 margin-top: 0.5em;
223 margin-bottom: 0;
224 font-style: normal;
225 color: navy;
227 dd > *:first-child {
228 margin-top: 0.1em;
231 ul, ol {
232 list-style-position: outside;
234 ol.arabic {
235 list-style-type: decimal;
237 ol.loweralpha {
238 list-style-type: lower-alpha;
240 ol.upperalpha {
241 list-style-type: upper-alpha;
243 ol.lowerroman {
244 list-style-type: lower-roman;
246 ol.upperroman {
247 list-style-type: upper-roman;
250 div.compact ul, div.compact ol,
251 div.compact p, div.compact p,
252 div.compact div, div.compact div {
253 margin-top: 0.1em;
254 margin-bottom: 0.1em;
257 div.tableblock > table {
258 border: 3px solid #527bbd;
260 thead, p.table.header {
261 font-family: sans-serif;
262 font-weight: bold;
264 tfoot {
265 font-weight: bold;
267 td > div.verse {
268 white-space: pre;
270 p.table {
271 margin-top: 0;
273 /* Because the table frame attribute is overriden by CSS in most browsers. */
274 div.tableblock > table[frame="void"] {
275 border-style: none;
277 div.tableblock > table[frame="hsides"] {
278 border-left-style: none;
279 border-right-style: none;
281 div.tableblock > table[frame="vsides"] {
282 border-top-style: none;
283 border-bottom-style: none;
287 div.hdlist {
288 margin-top: 0.8em;
289 margin-bottom: 0.8em;
291 div.hdlist tr {
292 padding-bottom: 15px;
294 dt.hdlist1.strong, td.hdlist1.strong {
295 font-weight: bold;
297 td.hdlist1 {
298 vertical-align: top;
299 font-style: normal;
300 padding-right: 0.8em;
301 color: navy;
303 td.hdlist2 {
304 vertical-align: top;
306 div.hdlist.compact tr {
307 margin: 0;
308 padding-bottom: 0;
311 .comment {
312 background: yellow;
315 .footnote, .footnoteref {
316 font-size: 0.8em;
319 span.footnote, span.footnoteref {
320 vertical-align: super;
323 #footnotes {
324 margin: 20px 0 20px 0;
325 padding: 7px 0 0 0;
328 #footnotes div.footnote {
329 margin: 0 0 5px 0;
332 #footnotes hr {
333 border: none;
334 border-top: 1px solid silver;
335 height: 1px;
336 text-align: left;
337 margin-left: 0;
338 width: 20%;
339 min-width: 100px;
343 @media print {
344 div#footer-badges { display: none; }
347 div#toc {
348 margin-bottom: 2.5em;
351 div#toctitle {
352 color: #527bbd;
353 font-family: sans-serif;
354 font-size: 1.1em;
355 font-weight: bold;
356 margin-top: 1.0em;
357 margin-bottom: 0.1em;
360 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
361 margin-top: 0;
362 margin-bottom: 0;
364 div.toclevel2 {
365 margin-left: 2em;
366 font-size: 0.9em;
368 div.toclevel3 {
369 margin-left: 4em;
370 font-size: 0.9em;
372 div.toclevel4 {
373 margin-left: 6em;
374 font-size: 0.9em;
376 /* Overrides for manpage documents */
377 h1 {
378 padding-top: 0.5em;
379 padding-bottom: 0.5em;
380 border-top: 2px solid silver;
381 border-bottom: 2px solid silver;
383 h2 {
384 border-style: none;
386 div.sectionbody {
387 margin-left: 5%;
390 @media print {
391 div#toc { display: none; }
394 /* Workarounds for IE6's broken and incomplete CSS2. */
396 div.sidebar-content {
397 background: #ffffee;
398 border: 1px solid silver;
399 padding: 0.5em;
401 div.sidebar-title, div.image-title {
402 color: #527bbd;
403 font-family: sans-serif;
404 font-weight: bold;
405 margin-top: 0.0em;
406 margin-bottom: 0.5em;
409 div.listingblock div.content {
410 border: 1px solid silver;
411 background: #f4f4f4;
412 padding: 0.5em;
415 div.quoteblock-attribution {
416 padding-top: 0.5em;
417 text-align: right;
420 div.verseblock-content {
421 white-space: pre;
423 div.verseblock-attribution {
424 padding-top: 0.75em;
425 text-align: left;
428 div.exampleblock-content {
429 border-left: 3px solid #dddddd;
430 padding-left: 0.5em;
433 /* IE6 sets dynamically generated links as visited. */
434 div#toc a:visited { color: blue; }
435 </style>
436 <script type="text/javascript">
437 /*<![CDATA[*/
438 window.onload = function(){asciidoc.footnotes();}
439 var asciidoc = { // Namespace.
441 /////////////////////////////////////////////////////////////////////
442 // Table Of Contents generator
443 /////////////////////////////////////////////////////////////////////
445 /* Author: Mihai Bazon, September 2002
446 * http://students.infoiasi.ro/~mishoo
448 * Table Of Content generator
449 * Version: 0.4
451 * Feel free to use this script under the terms of the GNU General Public
452 * License, as long as you do not remove or alter this notice.
455 /* modified by Troy D. Hanson, September 2006. License: GPL */
456 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
458 // toclevels = 1..4.
459 toc: function (toclevels) {
461 function getText(el) {
462 var text = "";
463 for (var i = el.firstChild; i != null; i = i.nextSibling) {
464 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
465 text += i.data;
466 else if (i.firstChild != null)
467 text += getText(i);
469 return text;
472 function TocEntry(el, text, toclevel) {
473 this.element = el;
474 this.text = text;
475 this.toclevel = toclevel;
478 function tocEntries(el, toclevels) {
479 var result = new Array;
480 var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
481 // Function that scans the DOM tree for header elements (the DOM2
482 // nodeIterator API would be a better technique but not supported by all
483 // browsers).
484 var iterate = function (el) {
485 for (var i = el.firstChild; i != null; i = i.nextSibling) {
486 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
487 var mo = re.exec(i.tagName);
488 if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
489 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
491 iterate(i);
495 iterate(el);
496 return result;
499 var toc = document.getElementById("toc");
500 var entries = tocEntries(document.getElementById("content"), toclevels);
501 for (var i = 0; i < entries.length; ++i) {
502 var entry = entries[i];
503 if (entry.element.id == "")
504 entry.element.id = "_toc_" + i;
505 var a = document.createElement("a");
506 a.href = "#" + entry.element.id;
507 a.appendChild(document.createTextNode(entry.text));
508 var div = document.createElement("div");
509 div.appendChild(a);
510 div.className = "toclevel" + entry.toclevel;
511 toc.appendChild(div);
513 if (entries.length == 0)
514 toc.parentNode.removeChild(toc);
518 /////////////////////////////////////////////////////////////////////
519 // Footnotes generator
520 /////////////////////////////////////////////////////////////////////
522 /* Based on footnote generation code from:
523 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
526 footnotes: function () {
527 var cont = document.getElementById("content");
528 var noteholder = document.getElementById("footnotes");
529 var spans = cont.getElementsByTagName("span");
530 var refs = {};
531 var n = 0;
532 for (i=0; i<spans.length; i++) {
533 if (spans[i].className == "footnote") {
534 n++;
535 // Use [\s\S] in place of . so multi-line matches work.
536 // Because JavaScript has no s (dotall) regex flag.
537 note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
538 noteholder.innerHTML +=
539 "<div class='footnote' id='_footnote_" + n + "'>" +
540 "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
541 n + "</a>. " + note + "</div>";
542 spans[i].innerHTML =
543 "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
544 "' title='View footnote' class='footnote'>" + n + "</a>]";
545 var id =spans[i].getAttribute("id");
546 if (id != null) refs["#"+id] = n;
549 if (n == 0)
550 noteholder.parentNode.removeChild(noteholder);
551 else {
552 // Process footnoterefs.
553 for (i=0; i<spans.length; i++) {
554 if (spans[i].className == "footnoteref") {
555 var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
556 href = href.match(/#.*/)[0]; // Because IE return full URL.
557 n = refs[href];
558 spans[i].innerHTML =
559 "[<a href='#_footnote_" + n +
560 "' title='View footnote' class='footnote'>" + n + "</a>]";
567 /*]]>*/
568 </script>
569 </head>
570 <body>
571 <div id="header">
572 <h1>
573 gitrevisions(7) Manual Page
574 </h1>
575 <h2>NAME</h2>
576 <div class="sectionbody">
577 <p>gitrevisions -
578 specifying revisions and ranges for git
579 </p>
580 </div>
581 </div>
582 <div id="content">
583 <h2 id="_synopsis">SYNOPSIS</h2>
584 <div class="sectionbody">
585 <div class="paragraph"><p>gitrevisions</p></div>
586 </div>
587 <h2 id="_description">DESCRIPTION</h2>
588 <div class="sectionbody">
589 <div class="paragraph"><p>Many Git commands take revision parameters as arguments. Depending on
590 the command, they denote a specific commit or, for commands which
591 walk the revision graph (such as <a href="git-log.html">git-log(1)</a>), all commits which can
592 be reached from that commit. In the latter case one can also specify a
593 range of revisions explicitly.</p></div>
594 <div class="paragraph"><p>In addition, some Git commands (such as <a href="git-show.html">git-show(1)</a>) also take
595 revision parameters which denote other objects than commits, e.g. blobs
596 ("files") or trees ("directories of files").</p></div>
597 </div>
598 <h2 id="_specifying_revisions">SPECIFYING REVISIONS</h2>
599 <div class="sectionbody">
600 <div class="paragraph"><p>A revision parameter <em>&lt;rev&gt;</em> typically, but not necessarily, names a
601 commit object. It uses what is called an <em>extended SHA1</em>
602 syntax. Here are various ways to spell object names. The
603 ones listed near the end of this list name trees and
604 blobs contained in a commit.</p></div>
605 <div class="dlist"><dl>
606 <dt class="hdlist1">
607 <em>&lt;sha1&gt;</em>, e.g. <em>dae86e1950b1277e545cee180551750029cfe735</em>, <em>dae86e</em>
608 </dt>
609 <dd>
611 The full SHA1 object name (40-byte hexadecimal string), or
612 a leading substring that is unique within the repository.
613 E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both
614 name the same commit object if there is no other object in
615 your repository whose object name starts with dae86e.
616 </p>
617 </dd>
618 <dt class="hdlist1">
619 <em>&lt;describeOutput&gt;</em>, e.g. <em>v1.7.4.2-679-g3bee7fb</em>
620 </dt>
621 <dd>
623 Output from <tt>git describe</tt>; i.e. a closest tag, optionally
624 followed by a dash and a number of commits, followed by a dash, a
625 <em>g</em>, and an abbreviated object name.
626 </p>
627 </dd>
628 <dt class="hdlist1">
629 <em>&lt;refname&gt;</em>, e.g. <em>master</em>, <em>heads/master</em>, <em>refs/heads/master</em>
630 </dt>
631 <dd>
633 A symbolic ref name. E.g. <em>master</em> typically means the commit
634 object referenced by <em>refs/heads/master</em>. If you
635 happen to have both <em>heads/master</em> and <em>tags/master</em>, you can
636 explicitly say <em>heads/master</em> to tell git which one you mean.
637 When ambiguous, a <em>&lt;name&gt;</em> is disambiguated by taking the
638 first match in the following rules:
639 </p>
640 <div class="olist arabic"><ol class="arabic">
641 <li>
643 If <em>$GIT_DIR/&lt;name&gt;</em> exists, that is what you mean (this is usually
644 useful only for <em>HEAD</em>, <em>FETCH_HEAD</em>, <em>ORIG_HEAD</em>, <em>MERGE_HEAD</em>
645 and <em>CHERRY_PICK_HEAD</em>);
646 </p>
647 </li>
648 <li>
650 otherwise, <em>refs/&lt;name&gt;</em> if it exists;
651 </p>
652 </li>
653 <li>
655 otherwise, <em>refs/tags/&lt;refname&gt;</em> if it exists;
656 </p>
657 </li>
658 <li>
660 otherwise, <em>refs/heads/&lt;name&gt;</em> if it exists;
661 </p>
662 </li>
663 <li>
665 otherwise, <em>refs/remotes/&lt;name&gt;</em> if it exists;
666 </p>
667 </li>
668 <li>
670 otherwise, <em>refs/remotes/&lt;name&gt;/HEAD</em> if it exists.
671 </p>
672 <div class="paragraph"><p><em>HEAD</em> names the commit on which you based the changes in the working tree.
673 <em>FETCH_HEAD</em> records the branch which you fetched from a remote repository
674 with your last <tt>git fetch</tt> invocation.
675 <em>ORIG_HEAD</em> is created by commands that move your <em>HEAD</em> in a drastic
676 way, to record the position of the <em>HEAD</em> before their operation, so that
677 you can easily change the tip of the branch back to the state before you ran
678 them.
679 <em>MERGE_HEAD</em> records the commit(s) which you are merging into your branch
680 when you run <tt>git merge</tt>.
681 <em>CHERRY_PICK_HEAD</em> records the commit which you are cherry-picking
682 when you run <tt>git cherry-pick</tt>.</p></div>
683 <div class="paragraph"><p>Note that any of the <em>refs/*</em> cases above may come either from
684 the <em>$GIT_DIR/refs</em> directory or from the <em>$GIT_DIR/packed-refs</em> file.</p></div>
685 </li>
686 </ol></div>
687 </dd>
688 <dt class="hdlist1">
689 <em>&lt;refname&gt;@{&lt;date&gt;}</em>, e.g. <em>master@{yesterday}</em>, <em>HEAD@{5 minutes ago}</em>
690 </dt>
691 <dd>
693 A ref followed by the suffix <em>@</em> with a date specification
694 enclosed in a brace
695 pair (e.g. <em>{yesterday}</em>, <em>{1 month 2 weeks 3 days 1 hour 1
696 second ago}</em> or <em>{1979-02-26 18:30:00}</em>) specifies the value
697 of the ref at a prior point in time. This suffix may only be
698 used immediately following a ref name and the ref must have an
699 existing log (<em>$GIT_DIR/logs/&lt;ref&gt;</em>). Note that this looks up the state
700 of your <strong>local</strong> ref at a given time; e.g., what was in your local
701 <em>master</em> branch last week. If you want to look at commits made during
702 certain times, see <em>--since</em> and <em>--until</em>.
703 </p>
704 </dd>
705 <dt class="hdlist1">
706 <em>&lt;refname&gt;@{&lt;n&gt;}</em>, e.g. <em>master@{1}</em>
707 </dt>
708 <dd>
710 A ref followed by the suffix <em>@</em> with an ordinal specification
711 enclosed in a brace pair (e.g. <em>{1}</em>, <em>{15}</em>) specifies
712 the n-th prior value of that ref. For example <em>master@{1}</em>
713 is the immediate prior value of <em>master</em> while <em>master@{5}</em>
714 is the 5th prior value of <em>master</em>. This suffix may only be used
715 immediately following a ref name and the ref must have an existing
716 log (<em>$GIT_DIR/logs/&lt;refname&gt;</em>).
717 </p>
718 </dd>
719 <dt class="hdlist1">
720 <em>@{&lt;n&gt;}</em>, e.g. <em>@{1}</em>
721 </dt>
722 <dd>
724 You can use the <em>@</em> construct with an empty ref part to get at a
725 reflog entry of the current branch. For example, if you are on
726 branch <em>blabla</em> then <em>@{1}</em> means the same as <em>blabla@{1}</em>.
727 </p>
728 </dd>
729 <dt class="hdlist1">
730 <em>@{-&lt;n&gt;}</em>, e.g. <em>@{-1}</em>
731 </dt>
732 <dd>
734 The construct <em>@{-&lt;n&gt;}</em> means the &lt;n&gt;th branch checked out
735 before the current one.
736 </p>
737 </dd>
738 <dt class="hdlist1">
739 <em>&lt;refname&gt;@{upstream}</em>, e.g. <em>master@{upstream}</em>, <em>@{u}</em>
740 </dt>
741 <dd>
743 The suffix <em>@{upstream}</em> to a ref (short form <em>&lt;refname&gt;@{u}</em>) refers to
744 the branch the ref is set to build on top of. A missing ref defaults
745 to the current branch.
746 </p>
747 </dd>
748 <dt class="hdlist1">
749 <em>&lt;rev&gt;&#94;</em>, e.g. <em>HEAD&#94;, v1.5.1&#94;0</em>
750 </dt>
751 <dd>
753 A suffix <em>&#94;</em> to a revision parameter means the first parent of
754 that commit object. <em>&#94;&lt;n&gt;</em> means the &lt;n&gt;th parent (i.e.
755 <em>&lt;rev&gt;&#94;</em>
756 is equivalent to <em>&lt;rev&gt;&#94;1</em>). As a special rule,
757 <em>&lt;rev&gt;&#94;0</em> means the commit itself and is used when <em>&lt;rev&gt;</em> is the
758 object name of a tag object that refers to a commit object.
759 </p>
760 </dd>
761 <dt class="hdlist1">
762 <em>&lt;rev&gt;&#126;&lt;n&gt;</em>, e.g. <em>master&#126;3</em>
763 </dt>
764 <dd>
766 A suffix <em>&#126;&lt;n&gt;</em> to a revision parameter means the commit
767 object that is the &lt;n&gt;th generation grand-parent of the named
768 commit object, following only the first parents. I.e. <em>&lt;rev&gt;&#126;3</em> is
769 equivalent to <em>&lt;rev&gt;&#94;&#94;&#94;</em> which is equivalent to
770 <em>&lt;rev&gt;&#94;1&#94;1&#94;1</em>. See below for an illustration of
771 the usage of this form.
772 </p>
773 </dd>
774 <dt class="hdlist1">
775 <em>&lt;rev&gt;&#94;{&lt;type&gt;}</em>, e.g. <em>v0.99.8&#94;{commit}</em>
776 </dt>
777 <dd>
779 A suffix <em>&#94;</em> followed by an object type name enclosed in
780 brace pair means the object
781 could be a tag, and dereference the tag recursively until an
782 object of that type is found or the object cannot be
783 dereferenced anymore (in which case, barf). <em>&lt;rev&gt;&#94;0</em>
784 is a short-hand for <em>&lt;rev&gt;&#94;{commit}</em>.
785 </p>
786 </dd>
787 <dt class="hdlist1">
788 <em>&lt;rev&gt;&#94;{}</em>, e.g. <em>v0.99.8&#94;{}</em>
789 </dt>
790 <dd>
792 A suffix <em>&#94;</em> followed by an empty brace pair
793 means the object could be a tag,
794 and dereference the tag recursively until a non-tag object is
795 found.
796 </p>
797 </dd>
798 <dt class="hdlist1">
799 <em>&lt;rev&gt;&#94;{/&lt;text&gt;}</em>, e.g. <em>HEAD^{/fix nasty bug}</em>
800 </dt>
801 <dd>
803 A suffix <em>&#94;</em> to a revision parameter, followed by a brace
804 pair that contains a text led by a slash,
805 is the same as the <em>:/fix nasty bug</em> syntax below except that
806 it returns the youngest matching commit which is reachable from
807 the <em>&lt;rev&gt;</em> before <em>&#94;</em>.
808 </p>
809 </dd>
810 <dt class="hdlist1">
811 <em>:/&lt;text&gt;</em>, e.g. <em>:/fix nasty bug</em>
812 </dt>
813 <dd>
815 A colon, followed by a slash, followed by a text, names
816 a commit whose commit message matches the specified regular expression.
817 This name returns the youngest matching commit which is
818 reachable from any ref. If the commit message starts with a
819 <em>!</em> you have to repeat that; the special sequence <em>:/!</em>,
820 followed by something else than <em>!</em>, is reserved for now.
821 The regular expression can match any part of the commit message. To
822 match messages starting with a string, one can use e.g. <em>:/^foo</em>.
823 </p>
824 </dd>
825 <dt class="hdlist1">
826 <em>&lt;rev&gt;:&lt;path&gt;</em>, e.g. <em>HEAD:README</em>, <em>:README</em>, <em>master:./README</em>
827 </dt>
828 <dd>
830 A suffix <em>:</em> followed by a path names the blob or tree
831 at the given path in the tree-ish object named by the part
832 before the colon.
833 <em>:path</em> (with an empty part before the colon)
834 is a special case of the syntax described next: content
835 recorded in the index at the given path.
836 A path starting with <em>./</em> or <em>../</em> is relative to the current working directory.
837 The given path will be converted to be relative to the working tree&#8217;s root directory.
838 This is most useful to address a blob or tree from a commit or tree that has
839 the same tree structure as the working tree.
840 </p>
841 </dd>
842 <dt class="hdlist1">
843 <em>:&lt;n&gt;:&lt;path&gt;</em>, e.g. <em>:0:README</em>, <em>:README</em>
844 </dt>
845 <dd>
847 A colon, optionally followed by a stage number (0 to 3) and a
848 colon, followed by a path, names a blob object in the
849 index at the given path. A missing stage number (and the colon
850 that follows it) names a stage 0 entry. During a merge, stage
851 1 is the common ancestor, stage 2 is the target branch&#8217;s version
852 (typically the current branch), and stage 3 is the version from
853 the branch which is being merged.
854 </p>
855 </dd>
856 </dl></div>
857 <div class="paragraph"><p>Here is an illustration, by Jon Loeliger. Both commit nodes B
858 and C are parents of commit node A. Parent commits are ordered
859 left-to-right.</p></div>
860 <div class="literalblock">
861 <div class="content">
862 <pre><tt>G H I J
863 \ / \ /
864 D E F
865 \ | / \
866 \ | / |
867 \|/ |
871 A</tt></pre>
872 </div></div>
873 <div class="literalblock">
874 <div class="content">
875 <pre><tt>A = = A^0
876 B = A^ = A^1 = A~1
877 C = A^2 = A^2
878 D = A^^ = A^1^1 = A~2
879 E = B^2 = A^^2
880 F = B^3 = A^^3
881 G = A^^^ = A^1^1^1 = A~3
882 H = D^2 = B^^2 = A^^^2 = A~2^2
883 I = F^ = B^3^ = A^^3^
884 J = F^2 = B^3^2 = A^^3^2</tt></pre>
885 </div></div>
886 </div>
887 <h2 id="_specifying_ranges">SPECIFYING RANGES</h2>
888 <div class="sectionbody">
889 <div class="paragraph"><p>History traversing commands such as <tt>git log</tt> operate on a set
890 of commits, not just a single commit. To these commands,
891 specifying a single revision with the notation described in the
892 previous section means the set of commits reachable from that
893 commit, following the commit ancestry chain.</p></div>
894 <div class="paragraph"><p>To exclude commits reachable from a commit, a prefix <em>&#94;</em>
895 notation is used. E.g. <em>&#94;r1 r2</em> means commits reachable
896 from <em>r2</em> but exclude the ones reachable from <em>r1</em>.</p></div>
897 <div class="paragraph"><p>This set operation appears so often that there is a shorthand
898 for it. When you have two commits <em>r1</em> and <em>r2</em> (named according
899 to the syntax explained in SPECIFYING REVISIONS above), you can ask
900 for commits that are reachable from r2 excluding those that are reachable
901 from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.</p></div>
902 <div class="paragraph"><p>A similar notation <em>r1...r2</em> is called symmetric difference
903 of <em>r1</em> and <em>r2</em> and is defined as
904 <em>r1 r2 --not $(git merge-base --all r1 r2)</em>.
905 It is the set of commits that are reachable from either one of
906 <em>r1</em> or <em>r2</em> but not from both.</p></div>
907 <div class="paragraph"><p>Two other shorthands for naming a set that is formed by a commit
908 and its parent commits exist. The <em>r1&#94;@</em> notation means all
909 parents of <em>r1</em>. <em>r1&#94;!</em> includes commit <em>r1</em> but excludes
910 all of its parents.</p></div>
911 <div class="paragraph"><p>Here are a handful of examples:</p></div>
912 <div class="literalblock">
913 <div class="content">
914 <pre><tt>D G H D
915 D F G H I J D F
916 ^G D H D
917 ^D B E I J F B
918 B...C G H D E B C
919 ^D B C E I J F B C
920 C^@ I J F
921 F^! D G H D F</tt></pre>
922 </div></div>
923 </div>
924 <h2 id="_see_also">SEE ALSO</h2>
925 <div class="sectionbody">
926 <div class="paragraph"><p><a href="git-rev-parse.html">git-rev-parse(1)</a></p></div>
927 </div>
928 <h2 id="_git">GIT</h2>
929 <div class="sectionbody">
930 <div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
931 </div>
932 </div>
933 <div id="footnotes"><hr /></div>
934 <div id="footer">
935 <div id="footer-text">
936 Last updated 2011-09-21 23:01:14 PDT
937 </div>
938 </div>
939 </body>
940 </html>