<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.6" />
<title>gitrevisions(7)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

pre {
  padding: 0;
  margin: 0;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }


/*
 * xhtml11 specific
 *
 * */

tt {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

.monospaced {
  font-family: monospace;
  font-size: inherit;
  color: navy;
}

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}
</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
gitrevisions(7) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>gitrevisions -
   specifying revisions and ranges for Git
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="paragraph"><p>gitrevisions</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Many Git commands take revision parameters as arguments. Depending on
the command, they denote a specific commit or, for commands which
walk the revision graph (such as <a href="git-log.html">git-log(1)</a>), all commits which can
be reached from that commit. In the latter case one can also specify a
range of revisions explicitly.</p></div>
<div class="paragraph"><p>In addition, some Git commands (such as <a href="git-show.html">git-show(1)</a>) also take
revision parameters which denote other objects than commits, e.g. blobs
("files") or trees ("directories of files").</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_specifying_revisions">SPECIFYING REVISIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>A revision parameter <em>&lt;rev&gt;</em> typically, but not necessarily, names a
commit object.  It uses what is called an <em>extended SHA-1</em>
syntax.  Here are various ways to spell object names.  The
ones listed near the end of this list name trees and
blobs contained in a commit.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<em>&lt;sha1&gt;</em>, e.g. <em>dae86e1950b1277e545cee180551750029cfe735</em>, <em>dae86e</em>
</dt>
<dd>
<p>
  The full SHA-1 object name (40-byte hexadecimal string), or
  a leading substring that is unique within the repository.
  E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both
  name the same commit object if there is no other object in
  your repository whose object name starts with dae86e.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;describeOutput&gt;</em>, e.g. <em>v1.7.4.2-679-g3bee7fb</em>
</dt>
<dd>
<p>
  Output from <tt>git describe</tt>; i.e. a closest tag, optionally
  followed by a dash and a number of commits, followed by a dash, a
  <em>g</em>, and an abbreviated object name.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;refname&gt;</em>, e.g. <em>master</em>, <em>heads/master</em>, <em>refs/heads/master</em>
</dt>
<dd>
<p>
  A symbolic ref name.  E.g. <em>master</em> typically means the commit
  object referenced by <em>refs/heads/master</em>.  If you
  happen to have both <em>heads/master</em> and <em>tags/master</em>, you can
  explicitly say <em>heads/master</em> to tell Git which one you mean.
  When ambiguous, a <em>&lt;refname&gt;</em> is disambiguated by taking the
  first match in the following rules:
</p>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
If <em>$GIT_DIR/&lt;refname&gt;</em> exists, that is what you mean (this is usually
    useful only for <em>HEAD</em>, <em>FETCH_HEAD</em>, <em>ORIG_HEAD</em>, <em>MERGE_HEAD</em>
    and <em>CHERRY_PICK_HEAD</em>);
</p>
</li>
<li>
<p>
otherwise, <em>refs/&lt;refname&gt;</em> if it exists;
</p>
</li>
<li>
<p>
otherwise, <em>refs/tags/&lt;refname&gt;</em> if it exists;
</p>
</li>
<li>
<p>
otherwise, <em>refs/heads/&lt;refname&gt;</em> if it exists;
</p>
</li>
<li>
<p>
otherwise, <em>refs/remotes/&lt;refname&gt;</em> if it exists;
</p>
</li>
<li>
<p>
otherwise, <em>refs/remotes/&lt;refname&gt;/HEAD</em> if it exists.
</p>
<div class="paragraph"><p><em>HEAD</em> names the commit on which you based the changes in the working tree.
<em>FETCH_HEAD</em> records the branch which you fetched from a remote repository
with your last <tt>git fetch</tt> invocation.
<em>ORIG_HEAD</em> is created by commands that move your <em>HEAD</em> in a drastic
way, to record the position of the <em>HEAD</em> before their operation, so that
you can easily change the tip of the branch back to the state before you ran
them.
<em>MERGE_HEAD</em> records the commit(s) which you are merging into your branch
when you run <tt>git merge</tt>.
<em>CHERRY_PICK_HEAD</em> records the commit which you are cherry-picking
when you run <tt>git cherry-pick</tt>.</p></div>
<div class="paragraph"><p>Note that any of the <em>refs/*</em> cases above may come either from
the <em>$GIT_DIR/refs</em> directory or from the <em>$GIT_DIR/packed-refs</em> file.
While the ref name encoding is unspecified, UTF-8 is preferred as
some output processing may assume ref names in UTF-8.</p></div>
</li>
</ol></div>
</dd>
<dt class="hdlist1">
<em>@</em>
</dt>
<dd>
<p>
  <em>@</em> alone is a shortcut for <em>HEAD</em>.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;refname&gt;@{&lt;date&gt;}</em>, e.g. <em>master@{yesterday}</em>, <em>HEAD@{5 minutes ago}</em>
</dt>
<dd>
<p>
  A ref followed by the suffix <em>@</em> with a date specification
  enclosed in a brace
  pair (e.g. <em>{yesterday}</em>, <em>{1 month 2 weeks 3 days 1 hour 1
  second ago}</em> or <em>{1979-02-26 18:30:00}</em>) specifies the value
  of the ref at a prior point in time.  This suffix may only be
  used immediately following a ref name and the ref must have an
  existing log (<em>$GIT_DIR/logs/&lt;ref&gt;</em>). Note that this looks up the state
  of your <strong>local</strong> ref at a given time; e.g., what was in your local
  <em>master</em> branch last week. If you want to look at commits made during
  certain times, see <em>--since</em> and <em>--until</em>.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;refname&gt;@{&lt;n&gt;}</em>, e.g. <em>master@{1}</em>
</dt>
<dd>
<p>
  A ref followed by the suffix <em>@</em> with an ordinal specification
  enclosed in a brace pair (e.g. <em>{1}</em>, <em>{15}</em>) specifies
  the n-th prior value of that ref.  For example <em>master@{1}</em>
  is the immediate prior value of <em>master</em> while <em>master@{5}</em>
  is the 5th prior value of <em>master</em>. This suffix may only be used
  immediately following a ref name and the ref must have an existing
  log (<em>$GIT_DIR/logs/&lt;refname&gt;</em>).
</p>
</dd>
<dt class="hdlist1">
<em>@{&lt;n&gt;}</em>, e.g. <em>@{1}</em>
</dt>
<dd>
<p>
  You can use the <em>@</em> construct with an empty ref part to get at a
  reflog entry of the current branch. For example, if you are on
  branch <em>blabla</em> then <em>@{1}</em> means the same as <em>blabla@{1}</em>.
</p>
</dd>
<dt class="hdlist1">
<em>@{-&lt;n&gt;}</em>, e.g. <em>@{-1}</em>
</dt>
<dd>
<p>
  The construct <em>@{-&lt;n&gt;}</em> means the &lt;n&gt;th branch/commit checked out
  before the current one.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;branchname&gt;@{upstream}</em>, e.g. <em>master@{upstream}</em>, <em>@{u}</em>
</dt>
<dd>
<p>
  The suffix <em>@{upstream}</em> to a branchname (short form <em>&lt;branchname&gt;@{u}</em>)
  refers to the branch that the branch specified by branchname is set to build on
  top of.  A missing branchname defaults to the current one.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;&#94;</em>, e.g. <em>HEAD&#94;, v1.5.1&#94;0</em>
</dt>
<dd>
<p>
  A suffix <em>&#94;</em> to a revision parameter means the first parent of
  that commit object.  <em>&#94;&lt;n&gt;</em> means the &lt;n&gt;th parent (i.e.
  <em>&lt;rev&gt;&#94;</em>
  is equivalent to <em>&lt;rev&gt;&#94;1</em>).  As a special rule,
  <em>&lt;rev&gt;&#94;0</em> means the commit itself and is used when <em>&lt;rev&gt;</em> is the
  object name of a tag object that refers to a commit object.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;&#126;&lt;n&gt;</em>, e.g. <em>master&#126;3</em>
</dt>
<dd>
<p>
  A suffix <em>&#126;&lt;n&gt;</em> to a revision parameter means the commit
  object that is the &lt;n&gt;th generation ancestor of the named
  commit object, following only the first parents.  I.e. <em>&lt;rev&gt;&#126;3</em> is
  equivalent to <em>&lt;rev&gt;&#94;&#94;&#94;</em> which is equivalent to
  <em>&lt;rev&gt;&#94;1&#94;1&#94;1</em>.  See below for an illustration of
  the usage of this form.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;&#94;{&lt;type&gt;}</em>, e.g. <em>v0.99.8&#94;{commit}</em>
</dt>
<dd>
<p>
  A suffix <em>&#94;</em> followed by an object type name enclosed in
  brace pair means dereference the object at <em>&lt;rev&gt;</em> recursively until
  an object of type <em>&lt;type&gt;</em> is found or the object cannot be
  dereferenced anymore (in which case, barf).
  For example, if <em>&lt;rev&gt;</em> is a commit-ish, <em>&lt;rev&gt;&#94;{commit}</em>
  describes the corresponding commit object.
  Similarly, if <em>&lt;rev&gt;</em> is a tree-ish, <em>&lt;rev&gt;&#94;{tree}</em>
  describes the corresponding tree object.
  <em>&lt;rev&gt;&#94;0</em>
  is a short-hand for <em>&lt;rev&gt;&#94;{commit}</em>.
</p>
<div class="paragraph"><p><em>rev&#94;{object}</em> can be used to make sure <em>rev</em> names an
object that exists, without requiring <em>rev</em> to be a tag, and
without dereferencing <em>rev</em>; because a tag is already an object,
it does not have to be dereferenced even once to get to an object.</p></div>
<div class="paragraph"><p><em>rev&#94;{tag}</em> can be used to ensure that <em>rev</em> identifies an
existing tag object.</p></div>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;&#94;{}</em>, e.g. <em>v0.99.8&#94;{}</em>
</dt>
<dd>
<p>
  A suffix <em>&#94;</em> followed by an empty brace pair
  means the object could be a tag,
  and dereference the tag recursively until a non-tag object is
  found.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;&#94;{/&lt;text&gt;}</em>, e.g. <em>HEAD^{/fix nasty bug}</em>
</dt>
<dd>
<p>
  A suffix <em>&#94;</em> to a revision parameter, followed by a brace
  pair that contains a text led by a slash,
  is the same as the <em>:/fix nasty bug</em> syntax below except that
  it returns the youngest matching commit which is reachable from
  the <em>&lt;rev&gt;</em> before <em>&#94;</em>.
</p>
</dd>
<dt class="hdlist1">
<em>:/&lt;text&gt;</em>, e.g. <em>:/fix nasty bug</em>
</dt>
<dd>
<p>
  A colon, followed by a slash, followed by a text, names
  a commit whose commit message matches the specified regular expression.
  This name returns the youngest matching commit which is
  reachable from any ref.  If the commit message starts with a
  <em>!</em> you have to repeat that;  the special sequence <em>:/!</em>,
  followed by something else than <em>!</em>, is reserved for now.
  The regular expression can match any part of the commit message. To
  match messages starting with a string, one can use e.g. <em>:/^foo</em>.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;:&lt;path&gt;</em>, e.g. <em>HEAD:README</em>, <em>:README</em>, <em>master:./README</em>
</dt>
<dd>
<p>
  A suffix <em>:</em> followed by a path names the blob or tree
  at the given path in the tree-ish object named by the part
  before the colon.
  <em>:path</em> (with an empty part before the colon)
  is a special case of the syntax described next: content
  recorded in the index at the given path.
  A path starting with <em>./</em> or <em>../</em> is relative to the current working directory.
  The given path will be converted to be relative to the working tree&#8217;s root directory.
  This is most useful to address a blob or tree from a commit or tree that has
  the same tree structure as the working tree.
</p>
</dd>
<dt class="hdlist1">
<em>:&lt;n&gt;:&lt;path&gt;</em>, e.g. <em>:0:README</em>, <em>:README</em>
</dt>
<dd>
<p>
  A colon, optionally followed by a stage number (0 to 3) and a
  colon, followed by a path, names a blob object in the
  index at the given path. A missing stage number (and the colon
  that follows it) names a stage 0 entry. During a merge, stage
  1 is the common ancestor, stage 2 is the target branch&#8217;s version
  (typically the current branch), and stage 3 is the version from
  the branch which is being merged.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Here is an illustration, by Jon Loeliger.  Both commit nodes B
and C are parents of commit node A.  Parent commits are ordered
left-to-right.</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>A =      = A^0
B = A^   = A^1     = A~1
C = A^2  = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = F^   = B^3^    = A^^3^
J = F^2  = B^3^2   = A^^3^2</tt></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_specifying_ranges">SPECIFYING RANGES</h2>
<div class="sectionbody">
<div class="paragraph"><p>History traversing commands such as <tt>git log</tt> operate on a set
of commits, not just a single commit.  To these commands,
specifying a single revision with the notation described in the
previous section means the set of commits reachable from that
commit, following the commit ancestry chain.</p></div>
<div class="paragraph"><p>To exclude commits reachable from a commit, a prefix <em>&#94;</em>
notation is used.  E.g. <em>&#94;r1 r2</em> means commits reachable
from <em>r2</em> but exclude the ones reachable from <em>r1</em>.</p></div>
<div class="paragraph"><p>This set operation appears so often that there is a shorthand
for it.  When you have two commits <em>r1</em> and <em>r2</em> (named according
to the syntax explained in SPECIFYING REVISIONS above), you can ask
for commits that are reachable from r2 excluding those that are reachable
from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.</p></div>
<div class="paragraph"><p>A similar notation <em>r1...r2</em> is called symmetric difference
of <em>r1</em> and <em>r2</em> and is defined as
<em>r1 r2 --not $(git merge-base --all r1 r2)</em>.
It is the set of commits that are reachable from either one of
<em>r1</em> or <em>r2</em> but not from both.</p></div>
<div class="paragraph"><p>In these two shorthands, you can omit one end and let it default to HEAD.
For example, <em>origin..</em> is a shorthand for <em>origin..HEAD</em> and asks "What
did I do since I forked from the origin branch?"  Similarly, <em>..origin</em>
is a shorthand for <em>HEAD..origin</em> and asks "What did the origin do since
I forked from them?"  Note that <em>..</em> would mean <em>HEAD..HEAD</em> which is an
empty range that is both reachable and unreachable from HEAD.</p></div>
<div class="paragraph"><p>Two other shorthands for naming a set that is formed by a commit
and its parent commits exist.  The <em>r1&#94;@</em> notation means all
parents of <em>r1</em>.  <em>r1&#94;!</em> includes commit <em>r1</em> but excludes
all of its parents.</p></div>
<div class="paragraph"><p>To summarize:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<em>&lt;rev&gt;</em>
</dt>
<dd>
<p>
        Include commits that are reachable from (i.e. ancestors of)
        &lt;rev&gt;.
</p>
</dd>
<dt class="hdlist1">
<em>&#94;&lt;rev&gt;</em>
</dt>
<dd>
<p>
        Exclude commits that are reachable from (i.e. ancestors of)
        &lt;rev&gt;.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev1&gt;..&lt;rev2&gt;</em>
</dt>
<dd>
<p>
        Include commits that are reachable from &lt;rev2&gt; but exclude
        those that are reachable from &lt;rev1&gt;.  When either &lt;rev1&gt; or
        &lt;rev2&gt; is omitted, it defaults to <em>HEAD</em>.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev1&gt;...&lt;rev2&gt;</em>
</dt>
<dd>
<p>
        Include commits that are reachable from either &lt;rev1&gt; or
        &lt;rev2&gt; but exclude those that are reachable from both.  When
        either &lt;rev1&gt; or &lt;rev2&gt; is omitted, it defaults to <em>HEAD</em>.
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;&#94;@</em>, e.g. <em>HEAD&#94;@</em>
</dt>
<dd>
<p>
  A suffix <em>&#94;</em> followed by an at sign is the same as listing
  all parents of <em>&lt;rev&gt;</em> (meaning, include anything reachable from
  its parents, but not the commit itself).
</p>
</dd>
<dt class="hdlist1">
<em>&lt;rev&gt;&#94;!</em>, e.g. <em>HEAD&#94;!</em>
</dt>
<dd>
<p>
  A suffix <em>&#94;</em> followed by an exclamation mark is the same
  as giving commit <em>&lt;rev&gt;</em> and then all its parents prefixed with
  <em>&#94;</em> to exclude them (and their ancestors).
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Here are a handful of examples:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>D                G H D
D F              G H I J D F
^G D             H D
^D B             E I J F B
B..C             C
B...C            G H D E B C
^D B C           E I J F B C
C                I J F C
C^@              I J F
C^!              C
F^! D            G H D F</tt></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="git-rev-parse.html">git-rev-parse(1)</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_git">GIT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated 2013-08-20 08:40:27 PDT
</div>
</div>
</body>
</html>
