blob: 5ad79210f86f7b5be12984f98919474c3406c99c [file] [log] [blame]
Junio C Hamano78e3a782010-07-15 22:24:451<!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" />
Junio C Hamano7bd050f2011-09-22 06:32:226<meta name="generator" content="AsciiDoc 8.5.2" />
Junio C Hamano0d75e872010-12-17 06:57:267<title>gitrevisions(7)</title>
Junio C Hamano78e3a782010-07-15 22:24:458<style type="text/css">
9/* Debug borders */
10p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
11/*
12 border: 1px solid red;
13*/
14}
15
16body {
17 margin: 1em 5% 1em 5%;
18}
19
20a {
21 color: blue;
22 text-decoration: underline;
23}
24a:visited {
25 color: fuchsia;
26}
27
28em {
29 font-style: italic;
Junio C Hamano0d75e872010-12-17 06:57:2630 color: navy;
Junio C Hamano78e3a782010-07-15 22:24:4531}
32
33strong {
34 font-weight: bold;
Junio C Hamano0d75e872010-12-17 06:57:2635 color: #083194;
Junio C Hamano78e3a782010-07-15 22:24:4536}
37
38tt {
39 color: navy;
40}
41
42h1, 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;
48}
49
50h1, h2, h3 {
51 border-bottom: 2px solid silver;
52}
53h2 {
54 padding-top: 0.5em;
55}
56h3 {
57 float: left;
58}
59h3 + * {
60 clear: left;
61}
62
63div.sectionbody {
64 font-family: serif;
65 margin-left: 0;
66}
67
68hr {
69 border: 1px solid silver;
70}
71
72p {
73 margin-top: 0.5em;
74 margin-bottom: 0.5em;
75}
76
Junio C Hamano0d75e872010-12-17 06:57:2677ul, ol, li > p {
78 margin-top: 0;
79}
80
Junio C Hamano78e3a782010-07-15 22:24:4581pre {
82 padding: 0;
83 margin: 0;
84}
85
86span#author {
87 color: #527bbd;
88 font-family: sans-serif;
89 font-weight: bold;
90 font-size: 1.1em;
91}
92span#email {
93}
Junio C Hamano0d75e872010-12-17 06:57:2694span#revnumber, span#revdate, span#revremark {
Junio C Hamano78e3a782010-07-15 22:24:4595 font-family: sans-serif;
96}
97
98div#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;
104}
105div#footer-text {
106 float: left;
107 padding-bottom: 0.5em;
108}
109div#footer-badges {
110 float: right;
111 padding-bottom: 0.5em;
112}
113
Junio C Hamano0d75e872010-12-17 06:57:26114div#preamble {
115 margin-top: 1.5em;
116 margin-bottom: 1.5em;
117}
Junio C Hamano78e3a782010-07-15 22:24:45118div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
119div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
120div.admonitionblock {
Junio C Hamano7bd050f2011-09-22 06:32:22121 margin-top: 1.0em;
Junio C Hamano78e3a782010-07-15 22:24:45122 margin-bottom: 1.5em;
123}
124div.admonitionblock {
Junio C Hamano7bd050f2011-09-22 06:32:22125 margin-top: 2.0em;
126 margin-bottom: 2.0em;
127 margin-right: 10%;
128 color: #606060;
Junio C Hamano78e3a782010-07-15 22:24:45129}
130
131div.content { /* Block element content. */
132 padding: 0;
133}
134
135/* Block element titles. */
136div.title, caption.title {
Junio C Hamano0d75e872010-12-17 06:57:26137 color: #527bbd;
Junio C Hamano78e3a782010-07-15 22:24:45138 font-family: sans-serif;
139 font-weight: bold;
140 text-align: left;
141 margin-top: 1.0em;
142 margin-bottom: 0.5em;
143}
144div.title + * {
145 margin-top: 0;
146}
147
148td div.title:first-child {
149 margin-top: 0.0em;
150}
151div.content div.title:first-child {
152 margin-top: 0.0em;
153}
154div.content + div.title {
155 margin-top: 0.0em;
156}
157
158div.sidebarblock > div.content {
159 background: #ffffee;
160 border: 1px solid silver;
161 padding: 0.5em;
162}
163
Junio C Hamano78e3a782010-07-15 22:24:45164div.listingblock > div.content {
165 border: 1px solid silver;
166 background: #f4f4f4;
167 padding: 0.5em;
168}
169
Junio C Hamano7bd050f2011-09-22 06:32:22170div.quoteblock, div.verseblock {
171 padding-left: 1.0em;
172 margin-left: 1.0em;
Junio C Hamano0d75e872010-12-17 06:57:26173 margin-right: 10%;
Junio C Hamano7bd050f2011-09-22 06:32:22174 border-left: 5px solid #dddddd;
175 color: #777777;
Junio C Hamano78e3a782010-07-15 22:24:45176}
Junio C Hamano7bd050f2011-09-22 06:32:22177
Junio C Hamano0d75e872010-12-17 06:57:26178div.quoteblock > div.attribution {
179 padding-top: 0.5em;
Junio C Hamano78e3a782010-07-15 22:24:45180 text-align: right;
181}
Junio C Hamano0d75e872010-12-17 06:57:26182
Junio C Hamano0d75e872010-12-17 06:57:26183div.verseblock > div.content {
184 white-space: pre;
185}
186div.verseblock > div.attribution {
187 padding-top: 0.75em;
188 text-align: left;
189}
190/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
Junio C Hamano78e3a782010-07-15 22:24:45191div.verseblock + div.attribution {
192 text-align: left;
193}
194
195div.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;
202}
203div.admonitionblock td.content {
204 padding-left: 0.5em;
Junio C Hamano7bd050f2011-09-22 06:32:22205 border-left: 3px solid #dddddd;
Junio C Hamano78e3a782010-07-15 22:24:45206}
207
208div.exampleblock > div.content {
Junio C Hamano7bd050f2011-09-22 06:32:22209 border-left: 3px solid #dddddd;
210 padding-left: 0.5em;
Junio C Hamano78e3a782010-07-15 22:24:45211}
212
Junio C Hamano78e3a782010-07-15 22:24:45213div.imageblock div.content { padding-left: 0; }
Junio C Hamano78e3a782010-07-15 22:24:45214span.image img { border-style: none; }
Junio C Hamano0d75e872010-12-17 06:57:26215a.image:visited { color: white; }
Junio C Hamano78e3a782010-07-15 22:24:45216
217dl {
218 margin-top: 0.8em;
219 margin-bottom: 0.8em;
220}
221dt {
222 margin-top: 0.5em;
223 margin-bottom: 0;
Junio C Hamano0d75e872010-12-17 06:57:26224 font-style: normal;
225 color: navy;
Junio C Hamano78e3a782010-07-15 22:24:45226}
227dd > *:first-child {
Junio C Hamano0d75e872010-12-17 06:57:26228 margin-top: 0.1em;
Junio C Hamano78e3a782010-07-15 22:24:45229}
230
231ul, ol {
232 list-style-position: outside;
233}
Junio C Hamano0d75e872010-12-17 06:57:26234ol.arabic {
235 list-style-type: decimal;
236}
237ol.loweralpha {
Junio C Hamano78e3a782010-07-15 22:24:45238 list-style-type: lower-alpha;
239}
Junio C Hamano0d75e872010-12-17 06:57:26240ol.upperalpha {
241 list-style-type: upper-alpha;
242}
243ol.lowerroman {
244 list-style-type: lower-roman;
245}
246ol.upperroman {
247 list-style-type: upper-roman;
248}
249
250div.compact ul, div.compact ol,
251div.compact p, div.compact p,
252div.compact div, div.compact div {
253 margin-top: 0.1em;
254 margin-bottom: 0.1em;
255}
Junio C Hamano78e3a782010-07-15 22:24:45256
257div.tableblock > table {
258 border: 3px solid #527bbd;
259}
Junio C Hamano7bd050f2011-09-22 06:32:22260thead, p.table.header {
Junio C Hamano78e3a782010-07-15 22:24:45261 font-family: sans-serif;
262 font-weight: bold;
263}
264tfoot {
265 font-weight: bold;
266}
Junio C Hamano0d75e872010-12-17 06:57:26267td > div.verse {
268 white-space: pre;
269}
270p.table {
271 margin-top: 0;
272}
273/* Because the table frame attribute is overriden by CSS in most browsers. */
274div.tableblock > table[frame="void"] {
275 border-style: none;
276}
277div.tableblock > table[frame="hsides"] {
278 border-left-style: none;
279 border-right-style: none;
280}
281div.tableblock > table[frame="vsides"] {
282 border-top-style: none;
283 border-bottom-style: none;
284}
Junio C Hamano78e3a782010-07-15 22:24:45285
Junio C Hamano0d75e872010-12-17 06:57:26286
287div.hdlist {
Junio C Hamano78e3a782010-07-15 22:24:45288 margin-top: 0.8em;
289 margin-bottom: 0.8em;
290}
Junio C Hamano0d75e872010-12-17 06:57:26291div.hdlist tr {
292 padding-bottom: 15px;
Junio C Hamano78e3a782010-07-15 22:24:45293}
Junio C Hamano0d75e872010-12-17 06:57:26294dt.hdlist1.strong, td.hdlist1.strong {
295 font-weight: bold;
296}
297td.hdlist1 {
Junio C Hamano78e3a782010-07-15 22:24:45298 vertical-align: top;
Junio C Hamano0d75e872010-12-17 06:57:26299 font-style: normal;
Junio C Hamano78e3a782010-07-15 22:24:45300 padding-right: 0.8em;
Junio C Hamano0d75e872010-12-17 06:57:26301 color: navy;
Junio C Hamano78e3a782010-07-15 22:24:45302}
Junio C Hamano0d75e872010-12-17 06:57:26303td.hdlist2 {
Junio C Hamano78e3a782010-07-15 22:24:45304 vertical-align: top;
305}
Junio C Hamano0d75e872010-12-17 06:57:26306div.hdlist.compact tr {
307 margin: 0;
308 padding-bottom: 0;
309}
310
311.comment {
312 background: yellow;
313}
Junio C Hamano78e3a782010-07-15 22:24:45314
Junio C Hamano7bd050f2011-09-22 06:32:22315.footnote, .footnoteref {
316 font-size: 0.8em;
317}
318
319span.footnote, span.footnoteref {
320 vertical-align: super;
321}
322
323#footnotes {
324 margin: 20px 0 20px 0;
325 padding: 7px 0 0 0;
326}
327
328#footnotes div.footnote {
329 margin: 0 0 5px 0;
330}
331
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;
340}
341
342
Junio C Hamano78e3a782010-07-15 22:24:45343@media print {
344 div#footer-badges { display: none; }
345}
346
Junio C Hamano7bd050f2011-09-22 06:32:22347div#toc {
348 margin-bottom: 2.5em;
349}
350
Junio C Hamano78e3a782010-07-15 22:24:45351div#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;
358}
359
360div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
361 margin-top: 0;
362 margin-bottom: 0;
363}
364div.toclevel2 {
365 margin-left: 2em;
366 font-size: 0.9em;
367}
368div.toclevel3 {
369 margin-left: 4em;
370 font-size: 0.9em;
371}
372div.toclevel4 {
373 margin-left: 6em;
374 font-size: 0.9em;
375}
Junio C Hamano0d75e872010-12-17 06:57:26376/* Overrides for manpage documents */
377h1 {
378 padding-top: 0.5em;
379 padding-bottom: 0.5em;
380 border-top: 2px solid silver;
381 border-bottom: 2px solid silver;
382}
383h2 {
384 border-style: none;
385}
386div.sectionbody {
387 margin-left: 5%;
388}
389
390@media print {
391 div#toc { display: none; }
392}
393
Junio C Hamano78e3a782010-07-15 22:24:45394/* Workarounds for IE6's broken and incomplete CSS2. */
395
396div.sidebar-content {
397 background: #ffffee;
398 border: 1px solid silver;
399 padding: 0.5em;
400}
401div.sidebar-title, div.image-title {
Junio C Hamano0d75e872010-12-17 06:57:26402 color: #527bbd;
Junio C Hamano78e3a782010-07-15 22:24:45403 font-family: sans-serif;
404 font-weight: bold;
405 margin-top: 0.0em;
406 margin-bottom: 0.5em;
407}
408
409div.listingblock div.content {
410 border: 1px solid silver;
411 background: #f4f4f4;
412 padding: 0.5em;
413}
414
Junio C Hamano0d75e872010-12-17 06:57:26415div.quoteblock-attribution {
416 padding-top: 0.5em;
417 text-align: right;
418}
419
420div.verseblock-content {
421 white-space: pre;
422}
423div.verseblock-attribution {
424 padding-top: 0.75em;
425 text-align: left;
Junio C Hamano78e3a782010-07-15 22:24:45426}
427
428div.exampleblock-content {
Junio C Hamano7bd050f2011-09-22 06:32:22429 border-left: 3px solid #dddddd;
Junio C Hamano78e3a782010-07-15 22:24:45430 padding-left: 0.5em;
431}
432
433/* IE6 sets dynamically generated links as visited. */
434div#toc a:visited { color: blue; }
435</style>
Junio C Hamano7bd050f2011-09-22 06:32:22436<script type="text/javascript">
437/*<![CDATA[*/
438window.onload = function(){asciidoc.footnotes();}
439var asciidoc = { // Namespace.
440
441/////////////////////////////////////////////////////////////////////
442// Table Of Contents generator
443/////////////////////////////////////////////////////////////////////
444
445/* Author: Mihai Bazon, September 2002
446 * http://students.infoiasi.ro/~mishoo
447 *
448 * Table Of Content generator
449 * Version: 0.4
450 *
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.
453 */
454
455 /* modified by Troy D. Hanson, September 2006. License: GPL */
456 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
457
458// toclevels = 1..4.
459toc: function (toclevels) {
460
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);
468 }
469 return text;
470 }
471
472 function TocEntry(el, text, toclevel) {
473 this.element = el;
474 this.text = text;
475 this.toclevel = toclevel;
476 }
477
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);
490 }
491 iterate(i);
492 }
493 }
494 }
495 iterate(el);
496 return result;
497 }
498
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);
512 }
513 if (entries.length == 0)
514 toc.parentNode.removeChild(toc);
515},
516
517
518/////////////////////////////////////////////////////////////////////
519// Footnotes generator
520/////////////////////////////////////////////////////////////////////
521
522/* Based on footnote generation code from:
523 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
524 */
525
526footnotes: 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;
547 }
548 }
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>]";
561 }
562 }
563 }
564}
565
566}
567/*]]>*/
568</script>
Junio C Hamano78e3a782010-07-15 22:24:45569</head>
570<body>
571<div id="header">
572<h1>
573gitrevisions(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>
Junio C Hamano7bd050f2011-09-22 06:32:22582<div id="content">
Junio C Hamano0d75e872010-12-17 06:57:26583<h2 id="_synopsis">SYNOPSIS</h2>
Junio C Hamano78e3a782010-07-15 22:24:45584<div class="sectionbody">
Junio C Hamano0d75e872010-12-17 06:57:26585<div class="paragraph"><p>gitrevisions</p></div>
Junio C Hamano78e3a782010-07-15 22:24:45586</div>
587<h2 id="_description">DESCRIPTION</h2>
588<div class="sectionbody">
Junio C Hamano0d75e872010-12-17 06:57:26589<div class="paragraph"><p>Many Git commands take revision parameters as arguments. Depending on
Junio C Hamano78e3a782010-07-15 22:24:45590the command, they denote a specific commit or, for commands which
Junio C Hamanoa28a9202012-06-21 07:08:23591walk the revision graph (such as <a href="git-log.html">git-log(1)</a>), all commits which can
Junio C Hamano78e3a782010-07-15 22:24:45592be reached from that commit. In the latter case one can also specify a
593range of revisions explicitly.</p></div>
Junio C Hamanoa28a9202012-06-21 07:08:23594<div class="paragraph"><p>In addition, some Git commands (such as <a href="git-show.html">git-show(1)</a>) also take
Junio C Hamano78e3a782010-07-15 22:24:45595revision 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">
Junio C Hamanoee3adc32011-04-06 19:53:38600<div class="paragraph"><p>A revision parameter <em>&lt;rev&gt;</em> typically, but not necessarily, names a
601commit object. It uses what is called an <em>extended SHA1</em>
Junio C Hamano78e3a782010-07-15 22:24:45602syntax. Here are various ways to spell object names. The
Junio C Hamanoee3adc32011-04-06 19:53:38603ones listed near the end of this list name trees and
Junio C Hamano78e3a782010-07-15 22:24:45604blobs contained in a commit.</p></div>
Junio C Hamanoee3adc32011-04-06 19:53:38605<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>
Junio C Hamano78e3a782010-07-15 22:24:45610<p>
Junio C Hamanoee3adc32011-04-06 19:53:38611 The full SHA1 object name (40-byte hexadecimal string), or
612 a leading substring that is unique within the repository.
Junio C Hamano78e3a782010-07-15 22:24:45613 E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both
Junio C Hamanoee3adc32011-04-06 19:53:38614 name the same commit object if there is no other object in
Junio C Hamano78e3a782010-07-15 22:24:45615 your repository whose object name starts with dae86e.
616</p>
Junio C Hamanoee3adc32011-04-06 19:53:38617</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>
Junio C Hamano78e3a782010-07-15 22:24:45622<p>
Junio C Hamanoee3adc32011-04-06 19:53:38623 Output from <tt>git describe</tt>; i.e. a closest tag, optionally
Junio C Hamano78e3a782010-07-15 22:24:45624 followed by a dash and a number of commits, followed by a dash, a
Junio C Hamanoee3adc32011-04-06 19:53:38625 <em>g</em>, and an abbreviated object name.
Junio C Hamano78e3a782010-07-15 22:24:45626</p>
Junio C Hamanoee3adc32011-04-06 19:53:38627</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>
Junio C Hamano78e3a782010-07-15 22:24:45632<p>
Junio C Hamanoee3adc32011-04-06 19:53:38633 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
Junio C Hamano78e3a782010-07-15 22:24:45636 explicitly say <em>heads/master</em> to tell git which one you mean.
Junio C Hamanof5933722012-07-25 23:25:21637 When ambiguous, a <em>&lt;refname&gt;</em> is disambiguated by taking the
Junio C Hamano78e3a782010-07-15 22:24:45638 first match in the following rules:
639</p>
Junio C Hamano0d75e872010-12-17 06:57:26640<div class="olist arabic"><ol class="arabic">
Junio C Hamano78e3a782010-07-15 22:24:45641<li>
642<p>
Junio C Hamanof5933722012-07-25 23:25:21643If <em>$GIT_DIR/&lt;refname&gt;</em> exists, that is what you mean (this is usually
Junio C Hamanoee3adc32011-04-06 19:53:38644 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>);
Junio C Hamano78e3a782010-07-15 22:24:45646</p>
647</li>
648<li>
649<p>
Junio C Hamanof5933722012-07-25 23:25:21650otherwise, <em>refs/&lt;refname&gt;</em> if it exists;
Junio C Hamano78e3a782010-07-15 22:24:45651</p>
652</li>
653<li>
654<p>
Junio C Hamanoee3adc32011-04-06 19:53:38655otherwise, <em>refs/tags/&lt;refname&gt;</em> if it exists;
Junio C Hamano78e3a782010-07-15 22:24:45656</p>
657</li>
658<li>
659<p>
Junio C Hamanof5933722012-07-25 23:25:21660otherwise, <em>refs/heads/&lt;refname&gt;</em> if it exists;
Junio C Hamano78e3a782010-07-15 22:24:45661</p>
662</li>
663<li>
664<p>
Junio C Hamanof5933722012-07-25 23:25:21665otherwise, <em>refs/remotes/&lt;refname&gt;</em> if it exists;
Junio C Hamano78e3a782010-07-15 22:24:45666</p>
667</li>
668<li>
669<p>
Junio C Hamanof5933722012-07-25 23:25:21670otherwise, <em>refs/remotes/&lt;refname&gt;/HEAD</em> if it exists.
Junio C Hamano78e3a782010-07-15 22:24:45671</p>
Junio C Hamanoee3adc32011-04-06 19:53:38672<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
674with 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
676way, to record the position of the <em>HEAD</em> before their operation, so that
677you can easily change the tip of the branch back to the state before you ran
678them.
679<em>MERGE_HEAD</em> records the commit(s) which you are merging into your branch
680when you run <tt>git merge</tt>.
681<em>CHERRY_PICK_HEAD</em> records the commit which you are cherry-picking
682when 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
Junio C Hamanoeccdd4a2012-09-10 23:28:17684the <em>$GIT_DIR/refs</em> directory or from the <em>$GIT_DIR/packed-refs</em> file.
685While the ref name encoding is unspecified, UTF-8 is prefered as
686some output processing may assume ref names in UTF-8.</p></div>
Junio C Hamano78e3a782010-07-15 22:24:45687</li>
688</ol></div>
Junio C Hamanoee3adc32011-04-06 19:53:38689</dd>
690<dt class="hdlist1">
691<em>&lt;refname&gt;@{&lt;date&gt;}</em>, e.g. <em>master@{yesterday}</em>, <em>HEAD@{5 minutes ago}</em>
692</dt>
693<dd>
Junio C Hamano78e3a782010-07-15 22:24:45694<p>
Junio C Hamanoee3adc32011-04-06 19:53:38695 A ref followed by the suffix <em>@</em> with a date specification
Junio C Hamano78e3a782010-07-15 22:24:45696 enclosed in a brace
697 pair (e.g. <em>{yesterday}</em>, <em>{1 month 2 weeks 3 days 1 hour 1
Junio C Hamanoee3adc32011-04-06 19:53:38698 second ago}</em> or <em>{1979-02-26 18:30:00}</em>) specifies the value
Junio C Hamano78e3a782010-07-15 22:24:45699 of the ref at a prior point in time. This suffix may only be
700 used immediately following a ref name and the ref must have an
Junio C Hamanoee3adc32011-04-06 19:53:38701 existing log (<em>$GIT_DIR/logs/&lt;ref&gt;</em>). Note that this looks up the state
Junio C Hamano78e3a782010-07-15 22:24:45702 of your <strong>local</strong> ref at a given time; e.g., what was in your local
Junio C Hamanoee3adc32011-04-06 19:53:38703 <em>master</em> branch last week. If you want to look at commits made during
704 certain times, see <em>--since</em> and <em>--until</em>.
Junio C Hamano78e3a782010-07-15 22:24:45705</p>
Junio C Hamanoee3adc32011-04-06 19:53:38706</dd>
707<dt class="hdlist1">
708<em>&lt;refname&gt;@{&lt;n&gt;}</em>, e.g. <em>master@{1}</em>
709</dt>
710<dd>
Junio C Hamano78e3a782010-07-15 22:24:45711<p>
Junio C Hamanoee3adc32011-04-06 19:53:38712 A ref followed by the suffix <em>@</em> with an ordinal specification
713 enclosed in a brace pair (e.g. <em>{1}</em>, <em>{15}</em>) specifies
Junio C Hamano78e3a782010-07-15 22:24:45714 the n-th prior value of that ref. For example <em>master@{1}</em>
715 is the immediate prior value of <em>master</em> while <em>master@{5}</em>
716 is the 5th prior value of <em>master</em>. This suffix may only be used
717 immediately following a ref name and the ref must have an existing
Junio C Hamanoee3adc32011-04-06 19:53:38718 log (<em>$GIT_DIR/logs/&lt;refname&gt;</em>).
Junio C Hamano78e3a782010-07-15 22:24:45719</p>
Junio C Hamanoee3adc32011-04-06 19:53:38720</dd>
721<dt class="hdlist1">
722<em>@{&lt;n&gt;}</em>, e.g. <em>@{1}</em>
723</dt>
724<dd>
Junio C Hamano78e3a782010-07-15 22:24:45725<p>
Junio C Hamanoee3adc32011-04-06 19:53:38726 You can use the <em>@</em> construct with an empty ref part to get at a
727 reflog entry of the current branch. For example, if you are on
728 branch <em>blabla</em> then <em>@{1}</em> means the same as <em>blabla@{1}</em>.
Junio C Hamano78e3a782010-07-15 22:24:45729</p>
Junio C Hamanoee3adc32011-04-06 19:53:38730</dd>
731<dt class="hdlist1">
732<em>@{-&lt;n&gt;}</em>, e.g. <em>@{-1}</em>
733</dt>
734<dd>
Junio C Hamano78e3a782010-07-15 22:24:45735<p>
Junio C Hamanoee3adc32011-04-06 19:53:38736 The construct <em>@{-&lt;n&gt;}</em> means the &lt;n&gt;th branch checked out
Junio C Hamano78e3a782010-07-15 22:24:45737 before the current one.
738</p>
Junio C Hamanoee3adc32011-04-06 19:53:38739</dd>
740<dt class="hdlist1">
741<em>&lt;refname&gt;@{upstream}</em>, e.g. <em>master@{upstream}</em>, <em>@{u}</em>
742</dt>
743<dd>
Junio C Hamano78e3a782010-07-15 22:24:45744<p>
Junio C Hamanoee3adc32011-04-06 19:53:38745 The suffix <em>@{upstream}</em> to a ref (short form <em>&lt;refname&gt;@{u}</em>) refers to
746 the branch the ref is set to build on top of. A missing ref defaults
Junio C Hamano78e3a782010-07-15 22:24:45747 to the current branch.
748</p>
Junio C Hamanoee3adc32011-04-06 19:53:38749</dd>
750<dt class="hdlist1">
751<em>&lt;rev&gt;&#94;</em>, e.g. <em>HEAD&#94;, v1.5.1&#94;0</em>
752</dt>
753<dd>
Junio C Hamano78e3a782010-07-15 22:24:45754<p>
Junio C Hamanoee3adc32011-04-06 19:53:38755 A suffix <em>&#94;</em> to a revision parameter means the first parent of
Junio C Hamano78e3a782010-07-15 22:24:45756 that commit object. <em>&#94;&lt;n&gt;</em> means the &lt;n&gt;th parent (i.e.
Junio C Hamanoee3adc32011-04-06 19:53:38757 <em>&lt;rev&gt;&#94;</em>
758 is equivalent to <em>&lt;rev&gt;&#94;1</em>). As a special rule,
759 <em>&lt;rev&gt;&#94;0</em> means the commit itself and is used when <em>&lt;rev&gt;</em> is the
Junio C Hamano78e3a782010-07-15 22:24:45760 object name of a tag object that refers to a commit object.
761</p>
Junio C Hamanoee3adc32011-04-06 19:53:38762</dd>
763<dt class="hdlist1">
764<em>&lt;rev&gt;&#126;&lt;n&gt;</em>, e.g. <em>master&#126;3</em>
765</dt>
766<dd>
Junio C Hamano78e3a782010-07-15 22:24:45767<p>
Junio C Hamanoee3adc32011-04-06 19:53:38768 A suffix <em>&#126;&lt;n&gt;</em> to a revision parameter means the commit
Junio C Hamano81d540a2012-03-02 19:52:47769 object that is the &lt;n&gt;th generation ancestor of the named
Junio C Hamanoee3adc32011-04-06 19:53:38770 commit object, following only the first parents. I.e. <em>&lt;rev&gt;&#126;3</em> is
771 equivalent to <em>&lt;rev&gt;&#94;&#94;&#94;</em> which is equivalent to
772 <em>&lt;rev&gt;&#94;1&#94;1&#94;1</em>. See below for an illustration of
Junio C Hamano78e3a782010-07-15 22:24:45773 the usage of this form.
774</p>
Junio C Hamanoee3adc32011-04-06 19:53:38775</dd>
776<dt class="hdlist1">
777<em>&lt;rev&gt;&#94;{&lt;type&gt;}</em>, e.g. <em>v0.99.8&#94;{commit}</em>
778</dt>
779<dd>
Junio C Hamano78e3a782010-07-15 22:24:45780<p>
Junio C Hamanoee3adc32011-04-06 19:53:38781 A suffix <em>&#94;</em> followed by an object type name enclosed in
782 brace pair means the object
Junio C Hamano78e3a782010-07-15 22:24:45783 could be a tag, and dereference the tag recursively until an
784 object of that type is found or the object cannot be
Junio C Hamanoee3adc32011-04-06 19:53:38785 dereferenced anymore (in which case, barf). <em>&lt;rev&gt;&#94;0</em>
786 is a short-hand for <em>&lt;rev&gt;&#94;{commit}</em>.
Junio C Hamano78e3a782010-07-15 22:24:45787</p>
Junio C Hamanoee3adc32011-04-06 19:53:38788</dd>
789<dt class="hdlist1">
790<em>&lt;rev&gt;&#94;{}</em>, e.g. <em>v0.99.8&#94;{}</em>
791</dt>
792<dd>
Junio C Hamano78e3a782010-07-15 22:24:45793<p>
Junio C Hamanoee3adc32011-04-06 19:53:38794 A suffix <em>&#94;</em> followed by an empty brace pair
795 means the object could be a tag,
Junio C Hamano78e3a782010-07-15 22:24:45796 and dereference the tag recursively until a non-tag object is
797 found.
798</p>
Junio C Hamanoee3adc32011-04-06 19:53:38799</dd>
800<dt class="hdlist1">
801<em>&lt;rev&gt;&#94;{/&lt;text&gt;}</em>, e.g. <em>HEAD^{/fix nasty bug}</em>
802</dt>
803<dd>
Junio C Hamano78e3a782010-07-15 22:24:45804<p>
Junio C Hamanoee3adc32011-04-06 19:53:38805 A suffix <em>&#94;</em> to a revision parameter, followed by a brace
806 pair that contains a text led by a slash,
807 is the same as the <em>:/fix nasty bug</em> syntax below except that
Junio C Hamano18b5ad52010-12-22 01:57:50808 it returns the youngest matching commit which is reachable from
Junio C Hamanoee3adc32011-04-06 19:53:38809 the <em>&lt;rev&gt;</em> before <em>&#94;</em>.
Junio C Hamano18b5ad52010-12-22 01:57:50810</p>
Junio C Hamanoee3adc32011-04-06 19:53:38811</dd>
812<dt class="hdlist1">
813<em>:/&lt;text&gt;</em>, e.g. <em>:/fix nasty bug</em>
814</dt>
815<dd>
Junio C Hamano18b5ad52010-12-22 01:57:50816<p>
Junio C Hamanoee3adc32011-04-06 19:53:38817 A colon, followed by a slash, followed by a text, names
Junio C Hamano442206c2010-09-28 05:51:23818 a commit whose commit message matches the specified regular expression.
Junio C Hamano78e3a782010-07-15 22:24:45819 This name returns the youngest matching commit which is
820 reachable from any ref. If the commit message starts with a
Junio C Hamanoee3adc32011-04-06 19:53:38821 <em>!</em> you have to repeat that; the special sequence <em>:/!</em>,
822 followed by something else than <em>!</em>, is reserved for now.
Junio C Hamano442206c2010-09-28 05:51:23823 The regular expression can match any part of the commit message. To
Junio C Hamanoee3adc32011-04-06 19:53:38824 match messages starting with a string, one can use e.g. <em>:/^foo</em>.
Junio C Hamano78e3a782010-07-15 22:24:45825</p>
Junio C Hamanoee3adc32011-04-06 19:53:38826</dd>
827<dt class="hdlist1">
828<em>&lt;rev&gt;:&lt;path&gt;</em>, e.g. <em>HEAD:README</em>, <em>:README</em>, <em>master:./README</em>
829</dt>
830<dd>
Junio C Hamano78e3a782010-07-15 22:24:45831<p>
Junio C Hamanoee3adc32011-04-06 19:53:38832 A suffix <em>:</em> followed by a path names the blob or tree
Junio C Hamano78e3a782010-07-15 22:24:45833 at the given path in the tree-ish object named by the part
834 before the colon.
Junio C Hamanoee3adc32011-04-06 19:53:38835 <em>:path</em> (with an empty part before the colon)
Junio C Hamano78e3a782010-07-15 22:24:45836 is a special case of the syntax described next: content
837 recorded in the index at the given path.
Junio C Hamanoee3adc32011-04-06 19:53:38838 A path starting with <em>./</em> or <em>../</em> is relative to the current working directory.
839 The given path will be converted to be relative to the working tree&#8217;s root directory.
Junio C Hamano0d75e872010-12-17 06:57:26840 This is most useful to address a blob or tree from a commit or tree that has
Junio C Hamanoee3adc32011-04-06 19:53:38841 the same tree structure as the working tree.
Junio C Hamano78e3a782010-07-15 22:24:45842</p>
Junio C Hamanoee3adc32011-04-06 19:53:38843</dd>
844<dt class="hdlist1">
845<em>:&lt;n&gt;:&lt;path&gt;</em>, e.g. <em>:0:README</em>, <em>:README</em>
846</dt>
847<dd>
Junio C Hamano78e3a782010-07-15 22:24:45848<p>
Junio C Hamanoee3adc32011-04-06 19:53:38849 A colon, optionally followed by a stage number (0 to 3) and a
850 colon, followed by a path, names a blob object in the
851 index at the given path. A missing stage number (and the colon
852 that follows it) names a stage 0 entry. During a merge, stage
Junio C Hamano0d75e872010-12-17 06:57:26853 1 is the common ancestor, stage 2 is the target branch&#8217;s version
Junio C Hamano78e3a782010-07-15 22:24:45854 (typically the current branch), and stage 3 is the version from
Junio C Hamanoee3adc32011-04-06 19:53:38855 the branch which is being merged.
Junio C Hamano78e3a782010-07-15 22:24:45856</p>
Junio C Hamanoee3adc32011-04-06 19:53:38857</dd>
858</dl></div>
Junio C Hamano0d75e872010-12-17 06:57:26859<div class="paragraph"><p>Here is an illustration, by Jon Loeliger. Both commit nodes B
Junio C Hamano78e3a782010-07-15 22:24:45860and C are parents of commit node A. Parent commits are ordered
861left-to-right.</p></div>
862<div class="literalblock">
863<div class="content">
864<pre><tt>G H I J
865 \ / \ /
866 D E F
867 \ | / \
868 \ | / |
869 \|/ |
870 B C
871 \ /
872 \ /
873 A</tt></pre>
874</div></div>
875<div class="literalblock">
876<div class="content">
877<pre><tt>A = = A^0
878B = A^ = A^1 = A~1
879C = A^2 = A^2
880D = A^^ = A^1^1 = A~2
881E = B^2 = A^^2
882F = B^3 = A^^3
883G = A^^^ = A^1^1^1 = A~3
884H = D^2 = B^^2 = A^^^2 = A~2^2
885I = F^ = B^3^ = A^^3^
886J = F^2 = B^3^2 = A^^3^2</tt></pre>
887</div></div>
888</div>
889<h2 id="_specifying_ranges">SPECIFYING RANGES</h2>
890<div class="sectionbody">
Junio C Hamanoee3adc32011-04-06 19:53:38891<div class="paragraph"><p>History traversing commands such as <tt>git log</tt> operate on a set
Junio C Hamano78e3a782010-07-15 22:24:45892of commits, not just a single commit. To these commands,
893specifying a single revision with the notation described in the
894previous section means the set of commits reachable from that
895commit, following the commit ancestry chain.</p></div>
Junio C Hamanoee3adc32011-04-06 19:53:38896<div class="paragraph"><p>To exclude commits reachable from a commit, a prefix <em>&#94;</em>
897notation is used. E.g. <em>&#94;r1 r2</em> means commits reachable
898from <em>r2</em> but exclude the ones reachable from <em>r1</em>.</p></div>
Junio C Hamano0d75e872010-12-17 06:57:26899<div class="paragraph"><p>This set operation appears so often that there is a shorthand
Junio C Hamanoee3adc32011-04-06 19:53:38900for it. When you have two commits <em>r1</em> and <em>r2</em> (named according
Junio C Hamano78e3a782010-07-15 22:24:45901to the syntax explained in SPECIFYING REVISIONS above), you can ask
902for commits that are reachable from r2 excluding those that are reachable
Junio C Hamanoee3adc32011-04-06 19:53:38903from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.</p></div>
904<div class="paragraph"><p>A similar notation <em>r1...r2</em> is called symmetric difference
905of <em>r1</em> and <em>r2</em> and is defined as
906<em>r1 r2 --not $(git merge-base --all r1 r2)</em>.
Junio C Hamano78e3a782010-07-15 22:24:45907It is the set of commits that are reachable from either one of
Junio C Hamanoee3adc32011-04-06 19:53:38908<em>r1</em> or <em>r2</em> but not from both.</p></div>
Junio C Hamanoeccdd4a2012-09-10 23:28:17909<div class="paragraph"><p>In these two shorthands, you can omit one end and let it default to HEAD.
910For example, <em>origin..</em> is a shorthand for <em>origin..HEAD</em> and asks "What
911did I do since I forked from the origin branch?" Similarly, <em>..origin</em>
912is a shorthand for <em>HEAD..origin</em> and asks "What did the origin do since
913I forked from them?" Note that <em>..</em> would mean <em>HEAD..HEAD</em> which is an
914empty range that is both reachable and unreachable from HEAD.</p></div>
Junio C Hamano0d75e872010-12-17 06:57:26915<div class="paragraph"><p>Two other shorthands for naming a set that is formed by a commit
Junio C Hamanoee3adc32011-04-06 19:53:38916and its parent commits exist. The <em>r1&#94;@</em> notation means all
917parents of <em>r1</em>. <em>r1&#94;!</em> includes commit <em>r1</em> but excludes
Junio C Hamano78e3a782010-07-15 22:24:45918all of its parents.</p></div>
Junio C Hamanof5933722012-07-25 23:25:21919<div class="paragraph"><p>To summarize:</p></div>
920<div class="dlist"><dl>
921<dt class="hdlist1">
922<em>&lt;rev&gt;</em>
923</dt>
924<dd>
925<p>
926 Include commits that are reachable from (i.e. ancestors of)
927 &lt;rev&gt;.
928</p>
929</dd>
930<dt class="hdlist1">
931<em>&#94;&lt;rev&gt;</em>
932</dt>
933<dd>
934<p>
935 Exclude commits that are reachable from (i.e. ancestors of)
936 &lt;rev&gt;.
937</p>
938</dd>
939<dt class="hdlist1">
940<em>&lt;rev1&gt;..&lt;rev2&gt;</em>
941</dt>
942<dd>
943<p>
944 Include commits that are reachable from &lt;rev2&gt; but exclude
945 those that are reachable from &lt;rev1&gt;.
946</p>
947</dd>
948<dt class="hdlist1">
949<em>&lt;rev1&gt;...&lt;rev2&gt;</em>
950</dt>
951<dd>
952<p>
953 Include commits that are reachable from either &lt;rev1&gt; or
954 &lt;rev2&gt; but exclude those that are reachable from both.
955</p>
956</dd>
957<dt class="hdlist1">
958<em>&lt;rev&gt;&#94;@</em>, e.g. <em>HEAD&#94;@</em>
959</dt>
960<dd>
961<p>
962 A suffix <em>&#94;</em> followed by an at sign is the same as listing
963 all parents of <em>&lt;rev&gt;</em> (meaning, include anything reachable from
964 its parents, but not the commit itself).
965</p>
966</dd>
967<dt class="hdlist1">
968<em>&lt;rev&gt;&#94;!</em>, e.g. <em>HEAD&#94;!</em>
969</dt>
970<dd>
971<p>
972 A suffix <em>&#94;</em> followed by an exclamation mark is the same
973 as giving commit <em>&lt;rev&gt;</em> and then all its parents prefixed with
974 <em>&#94;</em> to exclude them (and their ancestors).
975</p>
976</dd>
977</dl></div>
Junio C Hamano0d75e872010-12-17 06:57:26978<div class="paragraph"><p>Here are a handful of examples:</p></div>
Junio C Hamano78e3a782010-07-15 22:24:45979<div class="literalblock">
980<div class="content">
981<pre><tt>D G H D
982D F G H I J D F
983^G D H D
984^D B E I J F B
Junio C Hamanof5933722012-07-25 23:25:21985B..C C
Junio C Hamano78e3a782010-07-15 22:24:45986B...C G H D E B C
987^D B C E I J F B C
Junio C Hamanof5933722012-07-25 23:25:21988C I J F C
Junio C Hamano78e3a782010-07-15 22:24:45989C^@ I J F
Junio C Hamanof5933722012-07-25 23:25:21990C^! C
Junio C Hamano78e3a782010-07-15 22:24:45991F^! D G H D F</tt></pre>
992</div></div>
993</div>
994<h2 id="_see_also">SEE ALSO</h2>
995<div class="sectionbody">
Junio C Hamanoa28a9202012-06-21 07:08:23996<div class="paragraph"><p><a href="git-rev-parse.html">git-rev-parse(1)</a></p></div>
Junio C Hamano78e3a782010-07-15 22:24:45997</div>
998<h2 id="_git">GIT</h2>
999<div class="sectionbody">
Junio C Hamanoa28a9202012-06-21 07:08:231000<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
Junio C Hamano78e3a782010-07-15 22:24:451001</div>
Junio C Hamano7bd050f2011-09-22 06:32:221002</div>
1003<div id="footnotes"><hr /></div>
Junio C Hamano78e3a782010-07-15 22:24:451004<div id="footer">
1005<div id="footer-text">
Junio C Hamano02194af2011-11-17 20:33:591006Last updated 2011-11-15 13:45:02 PDT
Junio C Hamano78e3a782010-07-15 22:24:451007</div>
1008</div>
1009</body>
1010</html>