Autogenerated HTML docs for v1.7.7-237-g34c44
[git/jnareb-git.git] / git-rev-parse.html
blob6cdf75af4b53515671b82408465520bd9add72ec
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>git-rev-parse(1)</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 git-rev-parse(1) Manual Page
574 </h1>
575 <h2>NAME</h2>
576 <div class="sectionbody">
577 <p>git-rev-parse -
578 Pick out and massage parameters
579 </p>
580 </div>
581 </div>
582 <div id="content">
583 <h2 id="_synopsis">SYNOPSIS</h2>
584 <div class="sectionbody">
585 <div class="verseblock">
586 <div class="verseblock-content"><em>git rev-parse</em> [ --option ] &lt;args&gt;&#8230;</div>
587 <div class="verseblock-attribution">
588 </div></div>
589 </div>
590 <h2 id="_description">DESCRIPTION</h2>
591 <div class="sectionbody">
592 <div class="paragraph"><p>Many git porcelainish commands take mixture of flags
593 (i.e. parameters that begin with a dash <em>-</em>) and parameters
594 meant for the underlying <em>git rev-list</em> command they use internally
595 and flags and parameters for the other commands they use
596 downstream of <em>git rev-list</em>. This command is used to
597 distinguish between them.</p></div>
598 </div>
599 <h2 id="_options">OPTIONS</h2>
600 <div class="sectionbody">
601 <div class="dlist"><dl>
602 <dt class="hdlist1">
603 --parseopt
604 </dt>
605 <dd>
607 Use <em>git rev-parse</em> in option parsing mode (see PARSEOPT section below).
608 </p>
609 </dd>
610 <dt class="hdlist1">
611 --keep-dashdash
612 </dt>
613 <dd>
615 Only meaningful in <tt>--parseopt</tt> mode. Tells the option parser to echo
616 out the first <tt>--</tt> met instead of skipping it.
617 </p>
618 </dd>
619 <dt class="hdlist1">
620 --stop-at-non-option
621 </dt>
622 <dd>
624 Only meaningful in <tt>--parseopt</tt> mode. Lets the option parser stop at
625 the first non-option argument. This can be used to parse sub-commands
626 that take options themselves.
627 </p>
628 </dd>
629 <dt class="hdlist1">
630 --sq-quote
631 </dt>
632 <dd>
634 Use <em>git rev-parse</em> in shell quoting mode (see SQ-QUOTE
635 section below). In contrast to the <tt>--sq</tt> option below, this
636 mode does only quoting. Nothing else is done to command input.
637 </p>
638 </dd>
639 <dt class="hdlist1">
640 --revs-only
641 </dt>
642 <dd>
644 Do not output flags and parameters not meant for
645 <em>git rev-list</em> command.
646 </p>
647 </dd>
648 <dt class="hdlist1">
649 --no-revs
650 </dt>
651 <dd>
653 Do not output flags and parameters meant for
654 <em>git rev-list</em> command.
655 </p>
656 </dd>
657 <dt class="hdlist1">
658 --flags
659 </dt>
660 <dd>
662 Do not output non-flag parameters.
663 </p>
664 </dd>
665 <dt class="hdlist1">
666 --no-flags
667 </dt>
668 <dd>
670 Do not output flag parameters.
671 </p>
672 </dd>
673 <dt class="hdlist1">
674 --default &lt;arg&gt;
675 </dt>
676 <dd>
678 If there is no parameter given by the user, use <tt>&lt;arg&gt;</tt>
679 instead.
680 </p>
681 </dd>
682 <dt class="hdlist1">
683 --verify
684 </dt>
685 <dd>
687 The parameter given must be usable as a single, valid
688 object name. Otherwise barf and abort.
689 </p>
690 </dd>
691 <dt class="hdlist1">
693 </dt>
694 <dt class="hdlist1">
695 --quiet
696 </dt>
697 <dd>
699 Only meaningful in <tt>--verify</tt> mode. Do not output an error
700 message if the first argument is not a valid object name;
701 instead exit with non-zero status silently.
702 </p>
703 </dd>
704 <dt class="hdlist1">
705 --sq
706 </dt>
707 <dd>
709 Usually the output is made one line per flag and
710 parameter. This option makes output a single line,
711 properly quoted for consumption by shell. Useful when
712 you expect your parameter to contain whitespaces and
713 newlines (e.g. when using pickaxe <tt>-S</tt> with
714 <em>git diff-&#42;</em>). In contrast to the <tt>--sq-quote</tt> option,
715 the command input is still interpreted as usual.
716 </p>
717 </dd>
718 <dt class="hdlist1">
719 --not
720 </dt>
721 <dd>
723 When showing object names, prefix them with <em>&#94;</em> and
724 strip <em>&#94;</em> prefix from the object names that already have
725 one.
726 </p>
727 </dd>
728 <dt class="hdlist1">
729 --symbolic
730 </dt>
731 <dd>
733 Usually the object names are output in SHA1 form (with
734 possible <em>&#94;</em> prefix); this option makes them output in a
735 form as close to the original input as possible.
736 </p>
737 </dd>
738 <dt class="hdlist1">
739 --symbolic-full-name
740 </dt>
741 <dd>
743 This is similar to --symbolic, but it omits input that
744 are not refs (i.e. branch or tag names; or more
745 explicitly disambiguating "heads/master" form, when you
746 want to name the "master" branch when there is an
747 unfortunately named tag "master"), and show them as full
748 refnames (e.g. "refs/heads/master").
749 </p>
750 </dd>
751 <dt class="hdlist1">
752 --abbrev-ref[=(strict|loose)]
753 </dt>
754 <dd>
756 A non-ambiguous short name of the objects name.
757 The option core.warnAmbiguousRefs is used to select the strict
758 abbreviation mode.
759 </p>
760 </dd>
761 <dt class="hdlist1">
762 --all
763 </dt>
764 <dd>
766 Show all refs found in <tt>refs/</tt>.
767 </p>
768 </dd>
769 <dt class="hdlist1">
770 --branches[=pattern]
771 </dt>
772 <dt class="hdlist1">
773 --tags[=pattern]
774 </dt>
775 <dt class="hdlist1">
776 --remotes[=pattern]
777 </dt>
778 <dd>
780 Show all branches, tags, or remote-tracking branches,
781 respectively (i.e., refs found in <tt>refs/heads</tt>,
782 <tt>refs/tags</tt>, or <tt>refs/remotes</tt>, respectively).
783 </p>
784 <div class="paragraph"><p>If a <tt>pattern</tt> is given, only refs matching the given shell glob are
785 shown. If the pattern does not contain a globbing character (<tt>?</tt>,
786 <tt>&#42;</tt>, or <tt>[</tt>), it is turned into a prefix match by
787 appending <tt>/&#42;</tt>.</p></div>
788 </dd>
789 <dt class="hdlist1">
790 --glob=pattern
791 </dt>
792 <dd>
794 Show all refs matching the shell glob pattern <tt>pattern</tt>. If
795 the pattern does not start with <tt>refs/</tt>, this is automatically
796 prepended. If the pattern does not contain a globbing
797 character (<tt>?</tt>, <tt>&#42;</tt>, or <tt>[</tt>), it is turned into a prefix
798 match by appending <tt>/&#42;</tt>.
799 </p>
800 </dd>
801 <dt class="hdlist1">
802 --show-toplevel
803 </dt>
804 <dd>
806 Show the absolute path of the top-level directory.
807 </p>
808 </dd>
809 <dt class="hdlist1">
810 --show-prefix
811 </dt>
812 <dd>
814 When the command is invoked from a subdirectory, show the
815 path of the current directory relative to the top-level
816 directory.
817 </p>
818 </dd>
819 <dt class="hdlist1">
820 --show-cdup
821 </dt>
822 <dd>
824 When the command is invoked from a subdirectory, show the
825 path of the top-level directory relative to the current
826 directory (typically a sequence of "../", or an empty string).
827 </p>
828 </dd>
829 <dt class="hdlist1">
830 --git-dir
831 </dt>
832 <dd>
834 Show <tt>$GIT_DIR</tt> if defined. Otherwise show the path to
835 the .git directory, relative to the current directory.
836 </p>
837 <div class="paragraph"><p>If <tt>$GIT_DIR</tt> is not defined and the current directory
838 is not detected to lie in a git repository or work tree
839 print a message to stderr and exit with nonzero status.</p></div>
840 </dd>
841 <dt class="hdlist1">
842 --is-inside-git-dir
843 </dt>
844 <dd>
846 When the current working directory is below the repository
847 directory print "true", otherwise "false".
848 </p>
849 </dd>
850 <dt class="hdlist1">
851 --is-inside-work-tree
852 </dt>
853 <dd>
855 When the current working directory is inside the work tree of the
856 repository print "true", otherwise "false".
857 </p>
858 </dd>
859 <dt class="hdlist1">
860 --is-bare-repository
861 </dt>
862 <dd>
864 When the repository is bare print "true", otherwise "false".
865 </p>
866 </dd>
867 <dt class="hdlist1">
868 --local-env-vars
869 </dt>
870 <dd>
872 List the GIT_* environment variables that are local to the
873 repository (e.g. GIT_DIR or GIT_WORK_TREE, but not GIT_EDITOR).
874 Only the names of the variables are listed, not their value,
875 even if they are set.
876 </p>
877 </dd>
878 <dt class="hdlist1">
879 --short
880 </dt>
881 <dt class="hdlist1">
882 --short=number
883 </dt>
884 <dd>
886 Instead of outputting the full SHA1 values of object names try to
887 abbreviate them to a shorter unique name. When no length is specified
888 7 is used. The minimum length is 4.
889 </p>
890 </dd>
891 <dt class="hdlist1">
892 --since=datestring
893 </dt>
894 <dt class="hdlist1">
895 --after=datestring
896 </dt>
897 <dd>
899 Parse the date string, and output the corresponding
900 --max-age= parameter for <em>git rev-list</em>.
901 </p>
902 </dd>
903 <dt class="hdlist1">
904 --until=datestring
905 </dt>
906 <dt class="hdlist1">
907 --before=datestring
908 </dt>
909 <dd>
911 Parse the date string, and output the corresponding
912 --min-age= parameter for <em>git rev-list</em>.
913 </p>
914 </dd>
915 <dt class="hdlist1">
916 &lt;args&gt;&#8230;
917 </dt>
918 <dd>
920 Flags and parameters to be parsed.
921 </p>
922 </dd>
923 <dt class="hdlist1">
924 --resolve-git-dir &lt;path&gt;
925 </dt>
926 <dd>
928 Check if &lt;path&gt; is a valid git-dir or a git-file pointing to a valid
929 git-dir. If &lt;path&gt; is a valid git-dir the resolved path to git-dir will
930 be printed.
931 </p>
932 </dd>
933 </dl></div>
934 </div>
935 <h2 id="_specifying_revisions">SPECIFYING REVISIONS</h2>
936 <div class="sectionbody">
937 <div class="paragraph"><p>A revision parameter <em>&lt;rev&gt;</em> typically, but not necessarily, names a
938 commit object. It uses what is called an <em>extended SHA1</em>
939 syntax. Here are various ways to spell object names. The
940 ones listed near the end of this list name trees and
941 blobs contained in a commit.</p></div>
942 <div class="dlist"><dl>
943 <dt class="hdlist1">
944 <em>&lt;sha1&gt;</em>, e.g. <em>dae86e1950b1277e545cee180551750029cfe735</em>, <em>dae86e</em>
945 </dt>
946 <dd>
948 The full SHA1 object name (40-byte hexadecimal string), or
949 a leading substring that is unique within the repository.
950 E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both
951 name the same commit object if there is no other object in
952 your repository whose object name starts with dae86e.
953 </p>
954 </dd>
955 <dt class="hdlist1">
956 <em>&lt;describeOutput&gt;</em>, e.g. <em>v1.7.4.2-679-g3bee7fb</em>
957 </dt>
958 <dd>
960 Output from <tt>git describe</tt>; i.e. a closest tag, optionally
961 followed by a dash and a number of commits, followed by a dash, a
962 <em>g</em>, and an abbreviated object name.
963 </p>
964 </dd>
965 <dt class="hdlist1">
966 <em>&lt;refname&gt;</em>, e.g. <em>master</em>, <em>heads/master</em>, <em>refs/heads/master</em>
967 </dt>
968 <dd>
970 A symbolic ref name. E.g. <em>master</em> typically means the commit
971 object referenced by <em>refs/heads/master</em>. If you
972 happen to have both <em>heads/master</em> and <em>tags/master</em>, you can
973 explicitly say <em>heads/master</em> to tell git which one you mean.
974 When ambiguous, a <em>&lt;name&gt;</em> is disambiguated by taking the
975 first match in the following rules:
976 </p>
977 <div class="olist arabic"><ol class="arabic">
978 <li>
980 If <em>$GIT_DIR/&lt;name&gt;</em> exists, that is what you mean (this is usually
981 useful only for <em>HEAD</em>, <em>FETCH_HEAD</em>, <em>ORIG_HEAD</em>, <em>MERGE_HEAD</em>
982 and <em>CHERRY_PICK_HEAD</em>);
983 </p>
984 </li>
985 <li>
987 otherwise, <em>refs/&lt;name&gt;</em> if it exists;
988 </p>
989 </li>
990 <li>
992 otherwise, <em>refs/tags/&lt;refname&gt;</em> if it exists;
993 </p>
994 </li>
995 <li>
997 otherwise, <em>refs/heads/&lt;name&gt;</em> if it exists;
998 </p>
999 </li>
1000 <li>
1002 otherwise, <em>refs/remotes/&lt;name&gt;</em> if it exists;
1003 </p>
1004 </li>
1005 <li>
1007 otherwise, <em>refs/remotes/&lt;name&gt;/HEAD</em> if it exists.
1008 </p>
1009 <div class="paragraph"><p><em>HEAD</em> names the commit on which you based the changes in the working tree.
1010 <em>FETCH_HEAD</em> records the branch which you fetched from a remote repository
1011 with your last <tt>git fetch</tt> invocation.
1012 <em>ORIG_HEAD</em> is created by commands that move your <em>HEAD</em> in a drastic
1013 way, to record the position of the <em>HEAD</em> before their operation, so that
1014 you can easily change the tip of the branch back to the state before you ran
1015 them.
1016 <em>MERGE_HEAD</em> records the commit(s) which you are merging into your branch
1017 when you run <tt>git merge</tt>.
1018 <em>CHERRY_PICK_HEAD</em> records the commit which you are cherry-picking
1019 when you run <tt>git cherry-pick</tt>.</p></div>
1020 <div class="paragraph"><p>Note that any of the <em>refs/*</em> cases above may come either from
1021 the <em>$GIT_DIR/refs</em> directory or from the <em>$GIT_DIR/packed-refs</em> file.</p></div>
1022 </li>
1023 </ol></div>
1024 </dd>
1025 <dt class="hdlist1">
1026 <em>&lt;refname&gt;@{&lt;date&gt;}</em>, e.g. <em>master@{yesterday}</em>, <em>HEAD@{5 minutes ago}</em>
1027 </dt>
1028 <dd>
1030 A ref followed by the suffix <em>@</em> with a date specification
1031 enclosed in a brace
1032 pair (e.g. <em>{yesterday}</em>, <em>{1 month 2 weeks 3 days 1 hour 1
1033 second ago}</em> or <em>{1979-02-26 18:30:00}</em>) specifies the value
1034 of the ref at a prior point in time. This suffix may only be
1035 used immediately following a ref name and the ref must have an
1036 existing log (<em>$GIT_DIR/logs/&lt;ref&gt;</em>). Note that this looks up the state
1037 of your <strong>local</strong> ref at a given time; e.g., what was in your local
1038 <em>master</em> branch last week. If you want to look at commits made during
1039 certain times, see <em>--since</em> and <em>--until</em>.
1040 </p>
1041 </dd>
1042 <dt class="hdlist1">
1043 <em>&lt;refname&gt;@{&lt;n&gt;}</em>, e.g. <em>master@{1}</em>
1044 </dt>
1045 <dd>
1047 A ref followed by the suffix <em>@</em> with an ordinal specification
1048 enclosed in a brace pair (e.g. <em>{1}</em>, <em>{15}</em>) specifies
1049 the n-th prior value of that ref. For example <em>master@{1}</em>
1050 is the immediate prior value of <em>master</em> while <em>master@{5}</em>
1051 is the 5th prior value of <em>master</em>. This suffix may only be used
1052 immediately following a ref name and the ref must have an existing
1053 log (<em>$GIT_DIR/logs/&lt;refname&gt;</em>).
1054 </p>
1055 </dd>
1056 <dt class="hdlist1">
1057 <em>@{&lt;n&gt;}</em>, e.g. <em>@{1}</em>
1058 </dt>
1059 <dd>
1061 You can use the <em>@</em> construct with an empty ref part to get at a
1062 reflog entry of the current branch. For example, if you are on
1063 branch <em>blabla</em> then <em>@{1}</em> means the same as <em>blabla@{1}</em>.
1064 </p>
1065 </dd>
1066 <dt class="hdlist1">
1067 <em>@{-&lt;n&gt;}</em>, e.g. <em>@{-1}</em>
1068 </dt>
1069 <dd>
1071 The construct <em>@{-&lt;n&gt;}</em> means the &lt;n&gt;th branch checked out
1072 before the current one.
1073 </p>
1074 </dd>
1075 <dt class="hdlist1">
1076 <em>&lt;refname&gt;@{upstream}</em>, e.g. <em>master@{upstream}</em>, <em>@{u}</em>
1077 </dt>
1078 <dd>
1080 The suffix <em>@{upstream}</em> to a ref (short form <em>&lt;refname&gt;@{u}</em>) refers to
1081 the branch the ref is set to build on top of. A missing ref defaults
1082 to the current branch.
1083 </p>
1084 </dd>
1085 <dt class="hdlist1">
1086 <em>&lt;rev&gt;&#94;</em>, e.g. <em>HEAD&#94;, v1.5.1&#94;0</em>
1087 </dt>
1088 <dd>
1090 A suffix <em>&#94;</em> to a revision parameter means the first parent of
1091 that commit object. <em>&#94;&lt;n&gt;</em> means the &lt;n&gt;th parent (i.e.
1092 <em>&lt;rev&gt;&#94;</em>
1093 is equivalent to <em>&lt;rev&gt;&#94;1</em>). As a special rule,
1094 <em>&lt;rev&gt;&#94;0</em> means the commit itself and is used when <em>&lt;rev&gt;</em> is the
1095 object name of a tag object that refers to a commit object.
1096 </p>
1097 </dd>
1098 <dt class="hdlist1">
1099 <em>&lt;rev&gt;&#126;&lt;n&gt;</em>, e.g. <em>master&#126;3</em>
1100 </dt>
1101 <dd>
1103 A suffix <em>&#126;&lt;n&gt;</em> to a revision parameter means the commit
1104 object that is the &lt;n&gt;th generation grand-parent of the named
1105 commit object, following only the first parents. I.e. <em>&lt;rev&gt;&#126;3</em> is
1106 equivalent to <em>&lt;rev&gt;&#94;&#94;&#94;</em> which is equivalent to
1107 <em>&lt;rev&gt;&#94;1&#94;1&#94;1</em>. See below for an illustration of
1108 the usage of this form.
1109 </p>
1110 </dd>
1111 <dt class="hdlist1">
1112 <em>&lt;rev&gt;&#94;{&lt;type&gt;}</em>, e.g. <em>v0.99.8&#94;{commit}</em>
1113 </dt>
1114 <dd>
1116 A suffix <em>&#94;</em> followed by an object type name enclosed in
1117 brace pair means the object
1118 could be a tag, and dereference the tag recursively until an
1119 object of that type is found or the object cannot be
1120 dereferenced anymore (in which case, barf). <em>&lt;rev&gt;&#94;0</em>
1121 is a short-hand for <em>&lt;rev&gt;&#94;{commit}</em>.
1122 </p>
1123 </dd>
1124 <dt class="hdlist1">
1125 <em>&lt;rev&gt;&#94;{}</em>, e.g. <em>v0.99.8&#94;{}</em>
1126 </dt>
1127 <dd>
1129 A suffix <em>&#94;</em> followed by an empty brace pair
1130 means the object could be a tag,
1131 and dereference the tag recursively until a non-tag object is
1132 found.
1133 </p>
1134 </dd>
1135 <dt class="hdlist1">
1136 <em>&lt;rev&gt;&#94;{/&lt;text&gt;}</em>, e.g. <em>HEAD^{/fix nasty bug}</em>
1137 </dt>
1138 <dd>
1140 A suffix <em>&#94;</em> to a revision parameter, followed by a brace
1141 pair that contains a text led by a slash,
1142 is the same as the <em>:/fix nasty bug</em> syntax below except that
1143 it returns the youngest matching commit which is reachable from
1144 the <em>&lt;rev&gt;</em> before <em>&#94;</em>.
1145 </p>
1146 </dd>
1147 <dt class="hdlist1">
1148 <em>:/&lt;text&gt;</em>, e.g. <em>:/fix nasty bug</em>
1149 </dt>
1150 <dd>
1152 A colon, followed by a slash, followed by a text, names
1153 a commit whose commit message matches the specified regular expression.
1154 This name returns the youngest matching commit which is
1155 reachable from any ref. If the commit message starts with a
1156 <em>!</em> you have to repeat that; the special sequence <em>:/!</em>,
1157 followed by something else than <em>!</em>, is reserved for now.
1158 The regular expression can match any part of the commit message. To
1159 match messages starting with a string, one can use e.g. <em>:/^foo</em>.
1160 </p>
1161 </dd>
1162 <dt class="hdlist1">
1163 <em>&lt;rev&gt;:&lt;path&gt;</em>, e.g. <em>HEAD:README</em>, <em>:README</em>, <em>master:./README</em>
1164 </dt>
1165 <dd>
1167 A suffix <em>:</em> followed by a path names the blob or tree
1168 at the given path in the tree-ish object named by the part
1169 before the colon.
1170 <em>:path</em> (with an empty part before the colon)
1171 is a special case of the syntax described next: content
1172 recorded in the index at the given path.
1173 A path starting with <em>./</em> or <em>../</em> is relative to the current working directory.
1174 The given path will be converted to be relative to the working tree&#8217;s root directory.
1175 This is most useful to address a blob or tree from a commit or tree that has
1176 the same tree structure as the working tree.
1177 </p>
1178 </dd>
1179 <dt class="hdlist1">
1180 <em>:&lt;n&gt;:&lt;path&gt;</em>, e.g. <em>:0:README</em>, <em>:README</em>
1181 </dt>
1182 <dd>
1184 A colon, optionally followed by a stage number (0 to 3) and a
1185 colon, followed by a path, names a blob object in the
1186 index at the given path. A missing stage number (and the colon
1187 that follows it) names a stage 0 entry. During a merge, stage
1188 1 is the common ancestor, stage 2 is the target branch&#8217;s version
1189 (typically the current branch), and stage 3 is the version from
1190 the branch which is being merged.
1191 </p>
1192 </dd>
1193 </dl></div>
1194 <div class="paragraph"><p>Here is an illustration, by Jon Loeliger. Both commit nodes B
1195 and C are parents of commit node A. Parent commits are ordered
1196 left-to-right.</p></div>
1197 <div class="literalblock">
1198 <div class="content">
1199 <pre><tt>G H I J
1200 \ / \ /
1201 D E F
1202 \ | / \
1203 \ | / |
1204 \|/ |
1208 A</tt></pre>
1209 </div></div>
1210 <div class="literalblock">
1211 <div class="content">
1212 <pre><tt>A = = A^0
1213 B = A^ = A^1 = A~1
1214 C = A^2 = A^2
1215 D = A^^ = A^1^1 = A~2
1216 E = B^2 = A^^2
1217 F = B^3 = A^^3
1218 G = A^^^ = A^1^1^1 = A~3
1219 H = D^2 = B^^2 = A^^^2 = A~2^2
1220 I = F^ = B^3^ = A^^3^
1221 J = F^2 = B^3^2 = A^^3^2</tt></pre>
1222 </div></div>
1223 </div>
1224 <h2 id="_specifying_ranges">SPECIFYING RANGES</h2>
1225 <div class="sectionbody">
1226 <div class="paragraph"><p>History traversing commands such as <tt>git log</tt> operate on a set
1227 of commits, not just a single commit. To these commands,
1228 specifying a single revision with the notation described in the
1229 previous section means the set of commits reachable from that
1230 commit, following the commit ancestry chain.</p></div>
1231 <div class="paragraph"><p>To exclude commits reachable from a commit, a prefix <em>&#94;</em>
1232 notation is used. E.g. <em>&#94;r1 r2</em> means commits reachable
1233 from <em>r2</em> but exclude the ones reachable from <em>r1</em>.</p></div>
1234 <div class="paragraph"><p>This set operation appears so often that there is a shorthand
1235 for it. When you have two commits <em>r1</em> and <em>r2</em> (named according
1236 to the syntax explained in SPECIFYING REVISIONS above), you can ask
1237 for commits that are reachable from r2 excluding those that are reachable
1238 from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.</p></div>
1239 <div class="paragraph"><p>A similar notation <em>r1...r2</em> is called symmetric difference
1240 of <em>r1</em> and <em>r2</em> and is defined as
1241 <em>r1 r2 --not $(git merge-base --all r1 r2)</em>.
1242 It is the set of commits that are reachable from either one of
1243 <em>r1</em> or <em>r2</em> but not from both.</p></div>
1244 <div class="paragraph"><p>Two other shorthands for naming a set that is formed by a commit
1245 and its parent commits exist. The <em>r1&#94;@</em> notation means all
1246 parents of <em>r1</em>. <em>r1&#94;!</em> includes commit <em>r1</em> but excludes
1247 all of its parents.</p></div>
1248 <div class="paragraph"><p>Here are a handful of examples:</p></div>
1249 <div class="literalblock">
1250 <div class="content">
1251 <pre><tt>D G H D
1252 D F G H I J D F
1253 ^G D H D
1254 ^D B E I J F B
1255 B...C G H D E B C
1256 ^D B C E I J F B C
1257 C^@ I J F
1258 F^! D G H D F</tt></pre>
1259 </div></div>
1260 </div>
1261 <h2 id="_parseopt">PARSEOPT</h2>
1262 <div class="sectionbody">
1263 <div class="paragraph"><p>In <tt>--parseopt</tt> mode, <em>git rev-parse</em> helps massaging options to bring to shell
1264 scripts the same facilities C builtins have. It works as an option normalizer
1265 (e.g. splits single switches aggregate values), a bit like <tt>getopt(1)</tt> does.</p></div>
1266 <div class="paragraph"><p>It takes on the standard input the specification of the options to parse and
1267 understand, and echoes on the standard output a string suitable for <tt>sh(1)</tt> <tt>eval</tt>
1268 to replace the arguments with normalized ones. In case of error, it outputs
1269 usage on the standard error stream, and exits with code 129.</p></div>
1270 <div class="paragraph"><p>Note: Make sure you quote the result when passing it to <tt>eval</tt>. See
1271 below for an example.</p></div>
1272 <h3 id="_input_format">Input Format</h3><div style="clear:left"></div>
1273 <div class="paragraph"><p><em>git rev-parse --parseopt</em> input format is fully text based. It has two parts,
1274 separated by a line that contains only <tt>--</tt>. The lines before the separator
1275 (should be more than one) are used for the usage.
1276 The lines after the separator describe the options.</p></div>
1277 <div class="paragraph"><p>Each line of options has this format:</p></div>
1278 <div class="listingblock">
1279 <div class="content">
1280 <pre><tt>&lt;opt_spec&gt;&lt;flags&gt;* SP+ help LF</tt></pre>
1281 </div></div>
1282 <div class="dlist"><dl>
1283 <dt class="hdlist1">
1284 <tt>&lt;opt_spec&gt;</tt>
1285 </dt>
1286 <dd>
1288 its format is the short option character, then the long option name
1289 separated by a comma. Both parts are not required, though at least one
1290 is necessary. <tt>h,help</tt>, <tt>dry-run</tt> and <tt>f</tt> are all three correct
1291 <tt>&lt;opt_spec&gt;</tt>.
1292 </p>
1293 </dd>
1294 <dt class="hdlist1">
1295 <tt>&lt;flags&gt;</tt>
1296 </dt>
1297 <dd>
1299 <tt>&lt;flags&gt;</tt> are of <tt>*</tt>, <tt>=</tt>, <tt>?</tt> or <tt>!</tt>.
1300 </p>
1301 <div class="ulist"><ul>
1302 <li>
1304 Use <tt>=</tt> if the option takes an argument.
1305 </p>
1306 </li>
1307 <li>
1309 Use <tt>?</tt> to mean that the option is optional (though its use is discouraged).
1310 </p>
1311 </li>
1312 <li>
1314 Use <tt>*</tt> to mean that this option should not be listed in the usage
1315 generated for the <tt>-h</tt> argument. It&#8217;s shown for <tt>--help-all</tt> as
1316 documented in <a href="gitcli.html">gitcli(7)</a>.
1317 </p>
1318 </li>
1319 <li>
1321 Use <tt>!</tt> to not make the corresponding negated long option available.
1322 </p>
1323 </li>
1324 </ul></div>
1325 </dd>
1326 </dl></div>
1327 <div class="paragraph"><p>The remainder of the line, after stripping the spaces, is used
1328 as the help associated to the option.</p></div>
1329 <div class="paragraph"><p>Blank lines are ignored, and lines that don&#8217;t match this specification are used
1330 as option group headers (start the line with a space to create such
1331 lines on purpose).</p></div>
1332 <h3 id="_example">Example</h3><div style="clear:left"></div>
1333 <div class="listingblock">
1334 <div class="content">
1335 <pre><tt>OPTS_SPEC="\
1336 some-command [options] &lt;args&gt;...
1338 some-command does foo and bar!
1340 h,help show the help
1342 foo some nifty option --foo
1343 bar= some cool option --bar with an argument
1345 An option group Header
1346 C? option C with an optional argument"
1348 eval "$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"</tt></pre>
1349 </div></div>
1350 </div>
1351 <h2 id="_sq_quote">SQ-QUOTE</h2>
1352 <div class="sectionbody">
1353 <div class="paragraph"><p>In <tt>--sq-quote</tt> mode, <em>git rev-parse</em> echoes on the standard output a
1354 single line suitable for <tt>sh(1)</tt> <tt>eval</tt>. This line is made by
1355 normalizing the arguments following <tt>--sq-quote</tt>. Nothing other than
1356 quoting the arguments is done.</p></div>
1357 <div class="paragraph"><p>If you want command input to still be interpreted as usual by
1358 <em>git rev-parse</em> before the output is shell quoted, see the <tt>--sq</tt>
1359 option.</p></div>
1360 <h3 id="_example_2">Example</h3><div style="clear:left"></div>
1361 <div class="listingblock">
1362 <div class="content">
1363 <pre><tt>$ cat &gt;your-git-script.sh &lt;&lt;\EOF
1364 #!/bin/sh
1365 args=$(git rev-parse --sq-quote "$@") # quote user-supplied arguments
1366 command="git frotz -n24 $args" # and use it inside a handcrafted
1367 # command line
1368 eval "$command"
1371 $ sh your-git-script.sh "a b'c"</tt></pre>
1372 </div></div>
1373 </div>
1374 <h2 id="_examples">EXAMPLES</h2>
1375 <div class="sectionbody">
1376 <div class="ulist"><ul>
1377 <li>
1379 Print the object name of the current commit:
1380 </p>
1381 <div class="listingblock">
1382 <div class="content">
1383 <pre><tt>$ git rev-parse --verify HEAD</tt></pre>
1384 </div></div>
1385 </li>
1386 <li>
1388 Print the commit object name from the revision in the $REV shell variable:
1389 </p>
1390 <div class="listingblock">
1391 <div class="content">
1392 <pre><tt>$ git rev-parse --verify $REV</tt></pre>
1393 </div></div>
1394 <div class="paragraph"><p>This will error out if $REV is empty or not a valid revision.</p></div>
1395 </li>
1396 <li>
1398 Same as above:
1399 </p>
1400 <div class="listingblock">
1401 <div class="content">
1402 <pre><tt>$ git rev-parse --default master --verify $REV</tt></pre>
1403 </div></div>
1404 <div class="paragraph"><p>but if $REV is empty, the commit object name from master will be printed.</p></div>
1405 </li>
1406 </ul></div>
1407 </div>
1408 <h2 id="_git">GIT</h2>
1409 <div class="sectionbody">
1410 <div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
1411 </div>
1412 </div>
1413 <div id="footnotes"><hr /></div>
1414 <div id="footer">
1415 <div id="footer-text">
1416 Last updated 2011-10-10 16:42:04 PDT
1417 </div>
1418 </div>
1419 </body>
1420 </html>