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">
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">
10 p
, li
, dt
, dd
, div
, pre
, h1
, h2
, h3
, h4
, h5
, h6
{
12 border: 1px solid red;
17 margin: 1em 5% 1em 5%;
22 text-decoration: underline
;
42 h1
, h2
, h3
, h4
, h5
, h6
{
44 font-family: sans-serif
;
51 border-bottom: 2px solid silver
;
69 border: 1px solid silver
;
88 font-family: sans-serif
;
94 span#revnumber
, span#revdate
, span#revremark
{
95 font-family: sans-serif
;
99 font-family: sans-serif
;
101 border-top: 2px solid silver
;
107 padding-bottom: 0.5em;
111 padding-bottom: 0.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
{
122 margin-bottom: 1.5em;
124 div
.admonitionblock
{
126 margin-bottom: 2.0em;
131 div
.content
{ /* Block element content. */
135 /* Block element titles. */
136 div
.title
, caption
.title
{
138 font-family: sans-serif
;
142 margin-bottom: 0.5em;
148 td div
.title:first-child
{
151 div
.content div
.title:first-child
{
154 div
.content
+ div
.title
{
158 div
.sidebarblock
> div
.content
{
160 border: 1px solid silver
;
164 div
.listingblock
> div
.content
{
165 border: 1px solid silver
;
170 div
.quoteblock
, div
.verseblock
{
174 border-left: 5px solid
#dddddd;
178 div
.quoteblock
> div
.attribution
{
183 div
.verseblock
> div
.content
{
186 div
.verseblock
> div
.attribution
{
190 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
191 div
.verseblock
+ div
.attribution
{
195 div
.admonitionblock
.icon
{
199 text-decoration: underline
;
201 padding-right: 0.5em;
203 div
.admonitionblock td
.content
{
205 border-left: 3px solid
#dddddd;
208 div
.exampleblock
> div
.content
{
209 border-left: 3px solid
#dddddd;
213 div
.imageblock div
.content
{ padding-left: 0; }
214 span
.image img
{ border-style: none
; }
215 a
.image:visited
{ color: white
; }
219 margin-bottom: 0.8em;
232 list-style-position: outside
;
235 list-style-type: decimal
;
238 list-style-type: lower-alpha
;
241 list-style-type: upper-alpha
;
244 list-style-type: lower-roman
;
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
{
254 margin-bottom: 0.1em;
257 div
.tableblock
> table
{
258 border: 3px solid
#527bbd;
260 thead
, p
.table
.header
{
261 font-family: sans-serif
;
273 /* Because the table frame attribute is overriden by CSS in most browsers. */
274 div
.tableblock
> table
[frame
="void"] {
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
;
289 margin-bottom: 0.8em;
292 padding-bottom: 15px;
294 dt
.hdlist1
.strong
, td
.hdlist1
.strong
{
300 padding-right: 0.8em;
306 div
.hdlist
.compact tr
{
315 .footnote, .footnoteref {
319 span
.footnote
, span
.footnoteref
{
320 vertical-align: super
;
324 margin: 20px 0 20px 0;
328 #footnotes div
.footnote
{
334 border-top: 1px solid silver
;
344 div#footer-badges
{ display: none
; }
348 margin-bottom: 2.5em;
353 font-family: sans-serif
;
357 margin-bottom: 0.1em;
360 div
.toclevel1
, div
.toclevel2
, div
.toclevel3
, div
.toclevel4
{
376 /* Overrides for manpage documents */
379 padding-bottom: 0.5em;
380 border-top: 2px solid silver
;
381 border-bottom: 2px solid silver
;
391 div#toc
{ display: none
; }
394 /* Workarounds for IE6's broken and incomplete CSS2. */
396 div
.sidebar-content
{
398 border: 1px solid silver
;
401 div
.sidebar-title
, div
.image-title
{
403 font-family: sans-serif
;
406 margin-bottom: 0.5em;
409 div
.listingblock div
.content
{
410 border: 1px solid silver
;
415 div
.quoteblock-attribution
{
420 div
.verseblock-content
{
423 div
.verseblock-attribution
{
428 div
.exampleblock-content
{
429 border-left: 3px solid
#dddddd;
433 /* IE6 sets dynamically generated links as visited. */
434 div#toc
a:visited
{ color: blue
; }
436 <script type=
"text/javascript">
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
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 */
459 toc: function (toclevels
) {
461 function getText(el
) {
463 for (var i
= el
.firstChild
; i
!= null; i
= i
.nextSibling
) {
464 if (i
.nodeType
== 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
466 else if (i
.firstChild
!= null)
472 function TocEntry(el
, text
, toclevel
) {
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
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);
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");
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");
532 for (i
=0; i
<spans
.length
; i
++) {
533 if (spans
[i
].className
== "footnote") {
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>";
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
;
550 noteholder
.parentNode
.removeChild(noteholder
);
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.
559 "[<a href='#_footnote_" + n
+
560 "' title='View footnote' class='footnote'>" + n
+ "</a>]";
573 git-rev-parse(
1) Manual Page
576 <div class=
"sectionbody">
578 Pick out and massage parameters
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 ]
<args
>…</div>
587 <div class=
"verseblock-attribution">
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>
599 <h2 id=
"_options">OPTIONS
</h2>
600 <div class=
"sectionbody">
601 <div class=
"dlist"><dl>
607 Use
<em>git rev-parse
</em> in option parsing mode (see PARSEOPT section below).
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.
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.
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.
644 Do not output flags and parameters not meant for
645 <em>git rev-list
</em> command.
653 Do not output flags and parameters meant for
654 <em>git rev-list
</em> command.
662 Do not output non-flag parameters.
670 Do not output flag parameters.
674 --default
<arg
>
678 If there is no parameter given by the user, use
<tt><arg
></tt>
687 The parameter given must be usable as a single, valid
688 object name. Otherwise barf and abort.
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.
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-
*</em>). In contrast to the
<tt>--sq-quote
</tt> option,
715 the command input is still interpreted as usual.
723 When showing object names, prefix them with
<em>^</em> and
724 strip
<em>^</em> prefix from the object names that already have
733 Usually the object names are output in SHA1 form (with
734 possible
<em>^</em> prefix); this option makes them output in a
735 form as close to the original input as possible.
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").
752 --abbrev-ref[=(strict|loose)]
756 A non-ambiguous short name of the objects name.
757 The option core.warnAmbiguousRefs is used to select the strict
766 Show all refs found in
<tt>refs/
</tt>.
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).
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>*</tt>, or
<tt>[
</tt>), it is turned into a prefix match by
787 appending
<tt>/
*</tt>.
</p></div>
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>*</tt>, or
<tt>[
</tt>), it is turned into a prefix
798 match by appending
<tt>/
*</tt>.
806 Show the absolute path of the top-level directory.
814 When the command is invoked from a subdirectory, show the
815 path of the current directory relative to the top-level
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).
834 Show
<tt>$GIT_DIR
</tt> if defined. Otherwise show the path to
835 the .git directory, relative to the current directory.
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>
846 When the current working directory is below the repository
847 directory print
"true", otherwise
"false".
851 --is-inside-work-tree
855 When the current working directory is inside the work tree of the
856 repository print
"true", otherwise
"false".
864 When the repository is bare print
"true", otherwise
"false".
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.
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.
899 Parse the date string, and output the corresponding
900 --max-age= parameter for
<em>git rev-list
</em>.
911 Parse the date string, and output the corresponding
912 --min-age= parameter for
<em>git rev-list
</em>.
920 Flags and parameters to be parsed.
924 --resolve-git-dir
<path
>
928 Check if
<path
> is a valid git-dir or a git-file pointing to a valid
929 git-dir. If
<path
> is a valid git-dir the resolved path to git-dir will
935 <h2 id=
"_specifying_revisions">SPECIFYING REVISIONS
</h2>
936 <div class=
"sectionbody">
937 <div class=
"paragraph"><p>A revision parameter
<em><rev
></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>
944 <em><sha1
></em>, e.g.
<em>dae86e1950b1277e545cee180551750029cfe735
</em>,
<em>dae86e
</em>
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.
956 <em><describeOutput
></em>, e.g.
<em>v1.7
.4.2-
679-g3bee7fb
</em>
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.
966 <em><refname
></em>, e.g.
<em>master
</em>,
<em>heads/master
</em>,
<em>refs/heads/master
</em>
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><name
></em> is disambiguated by taking the
975 first match in the following rules:
977 <div class=
"olist arabic"><ol class=
"arabic">
980 If
<em>$GIT_DIR/
<name
></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>);
987 otherwise,
<em>refs/
<name
></em> if it exists;
992 otherwise,
<em>refs/tags/
<refname
></em> if it exists;
997 otherwise,
<em>refs/heads/
<name
></em> if it exists;
1002 otherwise,
<em>refs/remotes/
<name
></em> if it exists;
1007 otherwise,
<em>refs/remotes/
<name
>/HEAD
</em> if it exists.
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
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>
1025 <dt class=
"hdlist1">
1026 <em><refname
>@{
<date
>}
</em>, e.g.
<em>master@{yesterday}
</em>,
<em>HEAD@{
5 minutes ago}
</em>
1030 A ref followed by the suffix
<em>@
</em> with a date specification
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/
<ref
></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>.
1042 <dt class=
"hdlist1">
1043 <em><refname
>@{
<n
>}
</em>, e.g.
<em>master@{
1}
</em>
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/
<refname
></em>).
1056 <dt class=
"hdlist1">
1057 <em>@{
<n
>}
</em>, e.g.
<em>@{
1}
</em>
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>.
1066 <dt class=
"hdlist1">
1067 <em>@{-
<n
>}
</em>, e.g.
<em>@{-
1}
</em>
1071 The construct
<em>@{-
<n
>}
</em> means the
<n
>th branch checked out
1072 before the current one.
1075 <dt class=
"hdlist1">
1076 <em><refname
>@{upstream}
</em>, e.g.
<em>master@{upstream}
</em>,
<em>@{u}
</em>
1080 The suffix
<em>@{upstream}
</em> to a ref (short form
<em><refname
>@{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.
1085 <dt class=
"hdlist1">
1086 <em><rev
>^</em>, e.g.
<em>HEAD
^, v1.5
.1^0</em>
1090 A suffix
<em>^</em> to a revision parameter means the first parent of
1091 that commit object.
<em>^<n
></em> means the
<n
>th parent (i.e.
1092 <em><rev
>^</em>
1093 is equivalent to
<em><rev
>^1</em>). As a special rule,
1094 <em><rev
>^0</em> means the commit itself and is used when
<em><rev
></em> is the
1095 object name of a tag object that refers to a commit object.
1098 <dt class=
"hdlist1">
1099 <em><rev
>~<n
></em>, e.g.
<em>master
~3</em>
1103 A suffix
<em>~<n
></em> to a revision parameter means the commit
1104 object that is the
<n
>th generation grand-parent of the named
1105 commit object, following only the first parents. I.e.
<em><rev
>~3</em> is
1106 equivalent to
<em><rev
>^^^</em> which is equivalent to
1107 <em><rev
>^1^1^1</em>. See below for an illustration of
1108 the usage of this form.
1111 <dt class=
"hdlist1">
1112 <em><rev
>^{
<type
>}
</em>, e.g.
<em>v0.99
.8^{commit}
</em>
1116 A suffix
<em>^</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><rev
>^0</em>
1121 is a short-hand for
<em><rev
>^{commit}
</em>.
1124 <dt class=
"hdlist1">
1125 <em><rev
>^{}
</em>, e.g.
<em>v0.99
.8^{}
</em>
1129 A suffix
<em>^</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
1135 <dt class=
"hdlist1">
1136 <em><rev
>^{/
<text
>}
</em>, e.g.
<em>HEAD^{/fix nasty bug}
</em>
1140 A suffix
<em>^</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><rev
></em> before
<em>^</em>.
1147 <dt class=
"hdlist1">
1148 <em>:/
<text
></em>, e.g.
<em>:/fix nasty bug
</em>
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>.
1162 <dt class=
"hdlist1">
1163 <em><rev
>:
<path
></em>, e.g.
<em>HEAD:README
</em>,
<em>:README
</em>,
<em>master:./README
</em>
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
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
’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.
1179 <dt class=
"hdlist1">
1180 <em>:
<n
>:
<path
></em>, e.g.
<em>:
0:README
</em>,
<em>:README
</em>
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
’s version
1189 (typically the current branch), and stage
3 is the version from
1190 the branch which is being merged.
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">
1210 <div class=
"literalblock">
1211 <div class=
"content">
1215 D = A^^ = A^
1^
1 = A~
2
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>
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>^</em>
1232 notation is used. E.g.
<em>^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>^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
^@
</em> notation means all
1246 parents of
<em>r1
</em>.
<em>r1
^!
</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">
1258 F^! D G H D F
</tt></pre>
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><opt_spec
><flags
>* SP+ help LF
</tt></pre>
1282 <div class=
"dlist"><dl>
1283 <dt class=
"hdlist1">
1284 <tt><opt_spec
></tt>
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><opt_spec
></tt>.
1294 <dt class=
"hdlist1">
1295 <tt><flags
></tt>
1299 <tt><flags
></tt> are of
<tt>*
</tt>,
<tt>=
</tt>,
<tt>?
</tt> or
<tt>!
</tt>.
1301 <div class=
"ulist"><ul>
1304 Use
<tt>=
</tt> if the option takes an argument.
1309 Use
<tt>?
</tt> to mean that the option is optional (though its use is discouraged).
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
’s shown for
<tt>--help-all
</tt> as
1316 documented in
<a href=
"gitcli.html">gitcli(
7)
</a>.
1321 Use
<tt>!
</tt> to not make the corresponding negated long option available.
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
’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] <args>...
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>
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>
1360 <h3 id=
"_example_2">Example
</h3><div style=
"clear:left"></div>
1361 <div class=
"listingblock">
1362 <div class=
"content">
1363 <pre><tt>$ cat
>your-git-script.sh
<<\EOF
1365 args=$(git rev-parse --sq-quote
"$@") # quote user-supplied arguments
1366 command=
"git frotz -n24 $args" # and use it inside a handcrafted
1371 $ sh your-git-script.sh
"a b'c"</tt></pre>
1374 <h2 id=
"_examples">EXAMPLES
</h2>
1375 <div class=
"sectionbody">
1376 <div class=
"ulist"><ul>
1379 Print the object name of the current commit:
1381 <div class=
"listingblock">
1382 <div class=
"content">
1383 <pre><tt>$ git rev-parse --verify HEAD
</tt></pre>
1388 Print the commit object name from the revision in the $REV shell variable:
1390 <div class=
"listingblock">
1391 <div class=
"content">
1392 <pre><tt>$ git rev-parse --verify $REV
</tt></pre>
1394 <div class=
"paragraph"><p>This will error out if $REV is empty or not a valid revision.
</p></div>
1400 <div class=
"listingblock">
1401 <div class=
"content">
1402 <pre><tt>$ git rev-parse --default master --verify $REV
</tt></pre>
1404 <div class=
"paragraph"><p>but if $REV is empty, the commit object name from master will be printed.
</p></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>
1413 <div id=
"footnotes"><hr /></div>
1415 <div id=
"footer-text">
1416 Last updated
2011-
10-
10 16:
42:
04 PDT