<!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>git-log(1)</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>
git-log(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-log -
   Show commit logs
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git log</em> [&lt;options&gt;] [&lt;revision range&gt;] [[--] &lt;path&gt;&#8230;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Shows the commit logs.</p></div>
<div class="paragraph"><p>The command takes options applicable to the <tt>git rev-list</tt>
command to control what is shown and how, and options applicable to
the <tt>git diff-*</tt> commands to control how the changes
each commit introduces are shown.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--follow
</dt>
<dd>
<p>
        Continue listing the history of a file beyond renames
        (works only for a single file).
</p>
</dd>
<dt class="hdlist1">
--no-decorate
</dt>
<dt class="hdlist1">
--decorate[=short|full|no]
</dt>
<dd>
<p>
        Print out the ref names of any commits that are shown. If <em>short</em> is
        specified, the ref name prefixes <em>refs/heads/</em>, <em>refs/tags/</em> and
        <em>refs/remotes/</em> will not be printed. If <em>full</em> is specified, the
        full ref name (including prefix) will be printed. The default option
        is <em>short</em>.
</p>
</dd>
<dt class="hdlist1">
--source
</dt>
<dd>
<p>
        Print out the ref name given on the command line by which each
        commit was reached.
</p>
</dd>
<dt class="hdlist1">
--use-mailmap
</dt>
<dd>
<p>
        Use mailmap file to map author and committer names and email
        addresses to canonical real names and email addresses. See
        <a href="git-shortlog.html">git-shortlog(1)</a>.
</p>
</dd>
<dt class="hdlist1">
--full-diff
</dt>
<dd>
<p>
        Without this flag, <tt>git log -p &lt;path&gt;...</tt> shows commits that
        touch the specified paths, and diffs about the same specified
        paths.  With this, the full diff is shown for commits that touch
        the specified paths; this means that "&lt;path&gt;&#8230;" limits only
        commits, and doesn&#8217;t limit diff for those commits.
</p>
<div class="paragraph"><p>Note that this affects all diff-based output types, e.g. those
produced by <tt>--stat</tt>, etc.</p></div>
</dd>
<dt class="hdlist1">
--log-size
</dt>
<dd>
<p>
        Include a line &#8220;log size &lt;number&gt;&#8221; in the output for each commit,
        where &lt;number&gt; is the length of that commit&#8217;s message in bytes.
        Intended to speed up tools that read log messages from <tt>git log</tt>
        output by allowing them to allocate space in advance.
</p>
</dd>
<dt class="hdlist1">
-L &lt;start&gt;,&lt;end&gt;:&lt;file&gt;
</dt>
<dt class="hdlist1">
-L :&lt;regex&gt;:&lt;file&gt;
</dt>
<dd>
<p>
        Trace the evolution of the line range given by "&lt;start&gt;,&lt;end&gt;"
        (or the funcname regex &lt;regex&gt;) within the &lt;file&gt;.  You may
        not give any pathspec limiters.  This is currently limited to
        a walk starting from a single revision, i.e., you may only
        give zero or one positive revision arguments.
        You can specify this option more than once.
</p>
<div class="paragraph"><p>&lt;start&gt; and &lt;end&gt; can take one of these forms:</p></div>
<div class="ulist"><ul>
<li>
<p>
number
</p>
<div class="paragraph"><p>If &lt;start&gt; or &lt;end&gt; is a number, it specifies an
absolute line number (lines count from 1).</p></div>
</li>
<li>
<p>
/regex/
</p>
<div class="paragraph"><p>This form will use the first line matching the given
POSIX regex. If &lt;start&gt; is a regex, it will search from the end of
the previous <tt>-L</tt> range, if any, otherwise from the start of file.
If &lt;start&gt; is &#8220;^/regex/&#8221;, it will search from the start of file.
If &lt;end&gt; is a regex, it will search
starting at the line given by &lt;start&gt;.</p></div>
</li>
<li>
<p>
+offset or -offset
</p>
<div class="paragraph"><p>This is only valid for &lt;end&gt; and will specify a number
of lines before or after the line given by &lt;start&gt;.</p></div>
</li>
</ul></div>
<div class="paragraph"><p>If &#8220;:&lt;regex&gt;&#8221; is given in place of &lt;start&gt; and &lt;end&gt;, it denotes the range
from the first funcname line that matches &lt;regex&gt;, up to the next
funcname line. &#8220;:&lt;regex&gt;&#8221; searches from the end of the previous <tt>-L</tt> range,
if any, otherwise from the start of file.
&#8220;^:&lt;regex&gt;&#8221; searches from the start of file.</p></div>
</dd>
<dt class="hdlist1">
&lt;revision range&gt;
</dt>
<dd>
<p>
        Show only commits in the specified revision range.  When no
        &lt;revision range&gt; is specified, it defaults to <tt>HEAD</tt> (i.e. the
        whole history leading to the current commit).  <tt>origin..HEAD</tt>
        specifies all the commits reachable from the current commit
        (i.e. <tt>HEAD</tt>), but not from <tt>origin</tt>. For a complete list of
        ways to spell &lt;revision range&gt;, see the <em>Specifying Ranges</em>
        section of <a href="gitrevisions.html">gitrevisions(7)</a>.
</p>
</dd>
<dt class="hdlist1">
[--] &lt;path&gt;&#8230;
</dt>
<dd>
<p>
        Show only commits that are enough to explain how the files
        that match the specified paths came to be.  See <em>History
        Simplification</em> below for details and other simplification
        modes.
</p>
<div class="paragraph"><p>Paths may need to be prefixed with &#8216;`-- '&#8217; to separate them from
options or the revision range, when confusion arises.</p></div>
</dd>
</dl></div>
<div class="sect2">
<h3 id="_commit_limiting">Commit Limiting</h3>
<div class="paragraph"><p>Besides specifying a range of commits that should be listed using the
special notations explained in the description, additional commit
limiting may be applied.</p></div>
<div class="paragraph"><p>Using more options generally further limits the output (e.g.
<tt>--since=&lt;date1&gt;</tt> limits to commits newer than <tt>&lt;date1&gt;</tt>, and using it
with <tt>--grep=&lt;pattern&gt;</tt> further limits to commits whose log message
has a line that matches <tt>&lt;pattern&gt;</tt>), unless otherwise noted.</p></div>
<div class="paragraph"><p>Note that these are applied before commit
ordering and formatting options, such as <tt>--reverse</tt>.</p></div>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
-&lt;number&gt;
</dt>
<dt class="hdlist1">
-n &lt;number&gt;
</dt>
<dt class="hdlist1">
--max-count=&lt;number&gt;
</dt>
<dd>
<p>
        Limit the number of commits to output.
</p>
</dd>
<dt class="hdlist1">
--skip=&lt;number&gt;
</dt>
<dd>
<p>
        Skip <em>number</em> commits before starting to show the commit output.
</p>
</dd>
<dt class="hdlist1">
--since=&lt;date&gt;
</dt>
<dt class="hdlist1">
--after=&lt;date&gt;
</dt>
<dd>
<p>
        Show commits more recent than a specific date.
</p>
</dd>
<dt class="hdlist1">
--until=&lt;date&gt;
</dt>
<dt class="hdlist1">
--before=&lt;date&gt;
</dt>
<dd>
<p>
        Show commits older than a specific date.
</p>
</dd>
<dt class="hdlist1">
--author=&lt;pattern&gt;
</dt>
<dt class="hdlist1">
--committer=&lt;pattern&gt;
</dt>
<dd>
<p>
        Limit the commits output to ones with author/committer
        header lines that match the specified pattern (regular
        expression).  With more than one <tt>--author=&lt;pattern&gt;</tt>,
        commits whose author matches any of the given patterns are
        chosen (similarly for multiple <tt>--committer=&lt;pattern&gt;</tt>).
</p>
</dd>
<dt class="hdlist1">
--grep-reflog=&lt;pattern&gt;
</dt>
<dd>
<p>
        Limit the commits output to ones with reflog entries that
        match the specified pattern (regular expression). With
        more than one <tt>--grep-reflog</tt>, commits whose reflog message
        matches any of the given patterns are chosen.  It is an
        error to use this option unless <tt>--walk-reflogs</tt> is in use.
</p>
</dd>
<dt class="hdlist1">
--grep=&lt;pattern&gt;
</dt>
<dd>
<p>
        Limit the commits output to ones with log message that
        matches the specified pattern (regular expression).  With
        more than one <tt>--grep=&lt;pattern&gt;</tt>, commits whose message
        matches any of the given patterns are chosen (but see
        <tt>--all-match</tt>).
</p>
<div class="paragraph"><p>When <tt>--show-notes</tt> is in effect, the message from the notes as
if it is part of the log message.</p></div>
</dd>
<dt class="hdlist1">
--all-match
</dt>
<dd>
<p>
        Limit the commits output to ones that match all given <tt>--grep</tt>,
        instead of ones that match at least one.
</p>
</dd>
<dt class="hdlist1">
-i
</dt>
<dt class="hdlist1">
--regexp-ignore-case
</dt>
<dd>
<p>
        Match the regular expression limiting patterns without regard to letter
        case.
</p>
</dd>
<dt class="hdlist1">
--basic-regexp
</dt>
<dd>
<p>
        Consider the limiting patterns to be basic regular expressions;
        this is the default.
</p>
</dd>
<dt class="hdlist1">
-E
</dt>
<dt class="hdlist1">
--extended-regexp
</dt>
<dd>
<p>
        Consider the limiting patterns to be extended regular expressions
        instead of the default basic regular expressions.
</p>
</dd>
<dt class="hdlist1">
-F
</dt>
<dt class="hdlist1">
--fixed-strings
</dt>
<dd>
<p>
        Consider the limiting patterns to be fixed strings (don&#8217;t interpret
        pattern as a regular expression).
</p>
</dd>
<dt class="hdlist1">
--perl-regexp
</dt>
<dd>
<p>
        Consider the limiting patterns to be Perl-compatible regular expressions.
        Requires libpcre to be compiled in.
</p>
</dd>
<dt class="hdlist1">
--remove-empty
</dt>
<dd>
<p>
        Stop when a given path disappears from the tree.
</p>
</dd>
<dt class="hdlist1">
--merges
</dt>
<dd>
<p>
        Print only merge commits. This is exactly the same as <tt>--min-parents=2</tt>.
</p>
</dd>
<dt class="hdlist1">
--no-merges
</dt>
<dd>
<p>
        Do not print commits with more than one parent. This is
        exactly the same as <tt>--max-parents=1</tt>.
</p>
</dd>
<dt class="hdlist1">
--min-parents=&lt;number&gt;
</dt>
<dt class="hdlist1">
--max-parents=&lt;number&gt;
</dt>
<dt class="hdlist1">
--no-min-parents
</dt>
<dt class="hdlist1">
--no-max-parents
</dt>
<dd>
<p>
        Show only commits which have at least (or at most) that many parent
        commits. In particular, <tt>--max-parents=1</tt> is the same as <tt>--no-merges</tt>,
        <tt>--min-parents=2</tt> is the same as <tt>--merges</tt>.  <tt>--max-parents=0</tt>
        gives all root commits and <tt>--min-parents=3</tt> all octopus merges.
</p>
<div class="paragraph"><p><tt>--no-min-parents</tt> and <tt>--no-max-parents</tt> reset these limits (to no limit)
again.  Equivalent forms are <tt>--min-parents=0</tt> (any commit has 0 or more
parents) and <tt>--max-parents=-1</tt> (negative numbers denote no upper limit).</p></div>
</dd>
<dt class="hdlist1">
--first-parent
</dt>
<dd>
<p>
        Follow only the first parent commit upon seeing a merge
        commit.  This option can give a better overview when
        viewing the evolution of a particular topic branch,
        because merges into a topic branch tend to be only about
        adjusting to updated upstream from time to time, and
        this option allows you to ignore the individual commits
        brought in to your history by such a merge.
</p>
</dd>
<dt class="hdlist1">
--not
</dt>
<dd>
<p>
        Reverses the meaning of the <em>&#94;</em> prefix (or lack thereof)
        for all following revision specifiers, up to the next <tt>--not</tt>.
</p>
</dd>
<dt class="hdlist1">
--all
</dt>
<dd>
<p>
        Pretend as if all the refs in <tt>refs/</tt> are listed on the
        command line as <em>&lt;commit&gt;</em>.
</p>
</dd>
<dt class="hdlist1">
--branches[=&lt;pattern&gt;]
</dt>
<dd>
<p>
        Pretend as if all the refs in <tt>refs/heads</tt> are listed
        on the command line as <em>&lt;commit&gt;</em>. If <em>&lt;pattern&gt;</em> is given, limit
        branches to ones matching given shell glob. If pattern lacks <em>?</em>,
        <em>&#42;</em>, or <em>[</em>, <em>/&#42;</em> at the end is implied.
</p>
</dd>
<dt class="hdlist1">
--tags[=&lt;pattern&gt;]
</dt>
<dd>
<p>
        Pretend as if all the refs in <tt>refs/tags</tt> are listed
        on the command line as <em>&lt;commit&gt;</em>. If <em>&lt;pattern&gt;</em> is given, limit
        tags to ones matching given shell glob. If pattern lacks <em>?</em>, <em>&#42;</em>,
        or <em>[</em>, <em>/&#42;</em> at the end is implied.
</p>
</dd>
<dt class="hdlist1">
--remotes[=&lt;pattern&gt;]
</dt>
<dd>
<p>
        Pretend as if all the refs in <tt>refs/remotes</tt> are listed
        on the command line as <em>&lt;commit&gt;</em>. If <em>&lt;pattern&gt;</em> is given, limit
        remote-tracking branches to ones matching given shell glob.
        If pattern lacks <em>?</em>, <em>&#42;</em>, or <em>[</em>, <em>/&#42;</em> at the end is implied.
</p>
</dd>
<dt class="hdlist1">
--glob=&lt;glob-pattern&gt;
</dt>
<dd>
<p>
        Pretend as if all the refs matching shell glob <em>&lt;glob-pattern&gt;</em>
        are listed on the command line as <em>&lt;commit&gt;</em>. Leading <em>refs/</em>,
        is automatically prepended if missing. If pattern lacks <em>?</em>, <em>&#42;</em>,
        or <em>[</em>, <em>/&#42;</em> at the end is implied.
</p>
</dd>
<dt class="hdlist1">
--exclude=&lt;glob-pattern&gt;
</dt>
<dd>
<p>
        Do not include refs matching <em>&lt;glob-pattern&gt;</em> that the next <tt>--all</tt>,
        <tt>--branches</tt>, <tt>--tags</tt>, <tt>--remotes</tt>, or <tt>--glob</tt> would otherwise
        consider. Repetitions of this option accumulate exclusion patterns
        up to the next <tt>--all</tt>, <tt>--branches</tt>, <tt>--tags</tt>, <tt>--remotes</tt>, or
        <tt>--glob</tt> option (other options or arguments do not clear
        accumlated patterns).
</p>
<div class="paragraph"><p>The patterns given should not begin with <tt>refs/heads</tt>, <tt>refs/tags</tt>, or
<tt>refs/remotes</tt> when applied to <tt>--branches</tt>, <tt>--tags</tt>, or <tt>--remotes</tt>,
respectively, and they must begin with <tt>refs/</tt> when applied to <tt>--glob</tt>
or <tt>--all</tt>. If a trailing <em>/&#42;</em> is intended, it must be given
explicitly.</p></div>
</dd>
<dt class="hdlist1">
--ignore-missing
</dt>
<dd>
<p>
        Upon seeing an invalid object name in the input, pretend as if
        the bad input was not given.
</p>
</dd>
<dt class="hdlist1">
--bisect
</dt>
<dd>
<p>
        Pretend as if the bad bisection ref <tt>refs/bisect/bad</tt>
        was listed and as if it was followed by <tt>--not</tt> and the good
        bisection refs <tt>refs/bisect/good-*</tt> on the command
        line.
</p>
</dd>
<dt class="hdlist1">
--stdin
</dt>
<dd>
<p>
        In addition to the <em>&lt;commit&gt;</em> listed on the command
        line, read them from the standard input. If a <em>--</em> separator is
        seen, stop reading commits and start reading paths to limit the
        result.
</p>
</dd>
<dt class="hdlist1">
--cherry-mark
</dt>
<dd>
<p>
        Like <tt>--cherry-pick</tt> (see below) but mark equivalent commits
        with <tt>=</tt> rather than omitting them, and inequivalent ones with <tt>+</tt>.
</p>
</dd>
<dt class="hdlist1">
--cherry-pick
</dt>
<dd>
<p>
        Omit any commit that introduces the same change as
        another commit on the &#8220;other side&#8221; when the set of
        commits are limited with symmetric difference.
</p>
<div class="paragraph"><p>For example, if you have two branches, <tt>A</tt> and <tt>B</tt>, a usual way
to list all commits on only one side of them is with
<tt>--left-right</tt> (see the example below in the description of
the <tt>--left-right</tt> option). However, it shows the commits that were
cherry-picked from the other branch (for example, &#8220;3rd on b&#8221; may be
cherry-picked from branch A). With this option, such pairs of commits are
excluded from the output.</p></div>
</dd>
<dt class="hdlist1">
--left-only
</dt>
<dt class="hdlist1">
--right-only
</dt>
<dd>
<p>
        List only commits on the respective side of a symmetric range,
        i.e. only those which would be marked <tt>&lt;</tt> resp. <tt>&gt;</tt> by
        <tt>--left-right</tt>.
</p>
<div class="paragraph"><p>For example, <tt>--cherry-pick --right-only A...B</tt> omits those
commits from <tt>B</tt> which are in <tt>A</tt> or are patch-equivalent to a commit in
<tt>A</tt>. In other words, this lists the <tt>+</tt> commits from <tt>git cherry A B</tt>.
More precisely, <tt>--cherry-pick --right-only --no-merges</tt> gives the exact
list.</p></div>
</dd>
<dt class="hdlist1">
--cherry
</dt>
<dd>
<p>
        A synonym for <tt>--right-only --cherry-mark --no-merges</tt>; useful to
        limit the output to the commits on our side and mark those that
        have been applied to the other side of a forked history with
        <tt>git log --cherry upstream...mybranch</tt>, similar to
        <tt>git cherry upstream mybranch</tt>.
</p>
</dd>
<dt class="hdlist1">
-g
</dt>
<dt class="hdlist1">
--walk-reflogs
</dt>
<dd>
<p>
        Instead of walking the commit ancestry chain, walk
        reflog entries from the most recent one to older ones.
        When this option is used you cannot specify commits to
        exclude (that is, <em>&#94;commit</em>, <em>commit1..commit2</em>,
        and <em>commit1...commit2</em> notations cannot be used).
</p>
<div class="paragraph"><p>With <tt>--pretty</tt> format other than <tt>oneline</tt> (for obvious reasons),
this causes the output to have two extra lines of information
taken from the reflog.  By default, <em>commit@{Nth}</em> notation is
used in the output.  When the starting commit is specified as
<em>commit@{now}</em>, output also uses <em>commit@{timestamp}</em> notation
instead.  Under <tt>--pretty=oneline</tt>, the commit message is
prefixed with this information on the same line.
This option cannot be combined with <tt>--reverse</tt>.
See also <a href="git-reflog.html">git-reflog(1)</a>.</p></div>
</dd>
<dt class="hdlist1">
--merge
</dt>
<dd>
<p>
        After a failed merge, show refs that touch files having a
        conflict and don&#8217;t exist on all heads to merge.
</p>
</dd>
<dt class="hdlist1">
--boundary
</dt>
<dd>
<p>
        Output excluded boundary commits. Boundary commits are
        prefixed with <tt>-</tt>.
</p>
</dd>
</dl></div>
</div></div>
</div>
<div class="sect2">
<h3 id="_history_simplification">History Simplification</h3>
<div class="paragraph"><p>Sometimes you are only interested in parts of the history, for example the
commits modifying a particular &lt;path&gt;. But there are two parts of
<em>History Simplification</em>, one part is selecting the commits and the other
is how to do it, as there are various strategies to simplify the history.</p></div>
<div class="paragraph"><p>The following options select the commits to be shown:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
&lt;paths&gt;
</dt>
<dd>
<p>
        Commits modifying the given &lt;paths&gt; are selected.
</p>
</dd>
<dt class="hdlist1">
--simplify-by-decoration
</dt>
<dd>
<p>
        Commits that are referred by some branch or tag are selected.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Note that extra commits can be shown to give a meaningful history.</p></div>
<div class="paragraph"><p>The following options affect the way the simplification is performed:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
Default mode
</dt>
<dd>
<p>
        Simplifies the history to the simplest history explaining the
        final state of the tree. Simplest because it prunes some side
        branches if the end result is the same (i.e. merging branches
        with the same content)
</p>
</dd>
<dt class="hdlist1">
--full-history
</dt>
<dd>
<p>
        Same as the default mode, but does not prune some history.
</p>
</dd>
<dt class="hdlist1">
--dense
</dt>
<dd>
<p>
        Only the selected commits are shown, plus some to have a
        meaningful history.
</p>
</dd>
<dt class="hdlist1">
--sparse
</dt>
<dd>
<p>
        All commits in the simplified history are shown.
</p>
</dd>
<dt class="hdlist1">
--simplify-merges
</dt>
<dd>
<p>
        Additional option to <tt>--full-history</tt> to remove some needless
        merges from the resulting history, as there are no selected
        commits contributing to this merge.
</p>
</dd>
<dt class="hdlist1">
--ancestry-path
</dt>
<dd>
<p>
        When given a range of commits to display (e.g. <em>commit1..commit2</em>
        or <em>commit2 &#94;commit1</em>), only display commits that exist
        directly on the ancestry chain between the <em>commit1</em> and
        <em>commit2</em>, i.e. commits that are both descendants of <em>commit1</em>,
        and ancestors of <em>commit2</em>.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>A more detailed explanation follows.</p></div>
<div class="paragraph"><p>Suppose you specified <tt>foo</tt> as the &lt;paths&gt;.  We shall call commits
that modify <tt>foo</tt> !TREESAME, and the rest TREESAME.  (In a diff
filtered for <tt>foo</tt>, they look different and equal, respectively.)</p></div>
<div class="paragraph"><p>In the following, we will always refer to the same example history to
illustrate the differences between simplification settings.  We assume
that you are filtering for a file <tt>foo</tt> in this commit graph:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>          .-A---M---N---O---P---Q
         /     /   /   /   /   /
        I     B   C   D   E   Y
         \   /   /   /   /   /
          `-------------'   X</tt></pre>
</div></div>
<div class="paragraph"><p>The horizontal line of history A---Q is taken to be the first parent of
each merge.  The commits are:</p></div>
<div class="ulist"><ul>
<li>
<p>
<tt>I</tt> is the initial commit, in which <tt>foo</tt> exists with contents
  &#8220;asdf&#8221;, and a file <tt>quux</tt> exists with contents &#8220;quux&#8221;. Initial
  commits are compared to an empty tree, so <tt>I</tt> is !TREESAME.
</p>
</li>
<li>
<p>
In <tt>A</tt>, <tt>foo</tt> contains just &#8220;foo&#8221;.
</p>
</li>
<li>
<p>
<tt>B</tt> contains the same change as <tt>A</tt>.  Its merge <tt>M</tt> is trivial and
  hence TREESAME to all parents.
</p>
</li>
<li>
<p>
<tt>C</tt> does not change <tt>foo</tt>, but its merge <tt>N</tt> changes it to &#8220;foobar&#8221;,
  so it is not TREESAME to any parent.
</p>
</li>
<li>
<p>
<tt>D</tt> sets <tt>foo</tt> to &#8220;baz&#8221;. Its merge <tt>O</tt> combines the strings from
  <tt>N</tt> and <tt>D</tt> to &#8220;foobarbaz&#8221;; i.e., it is not TREESAME to any parent.
</p>
</li>
<li>
<p>
<tt>E</tt> changes <tt>quux</tt> to &#8220;xyzzy&#8221;, and its merge <tt>P</tt> combines the
  strings to &#8220;quux xyzzy&#8221;. <tt>P</tt> is TREESAME to <tt>O</tt>, but not to <tt>E</tt>.
</p>
</li>
<li>
<p>
<tt>X</tt> is an independent root commit that added a new file <tt>side</tt>, and <tt>Y</tt>
  modified it. <tt>Y</tt> is TREESAME to <tt>X</tt>. Its merge <tt>Q</tt> added <tt>side</tt> to <tt>P</tt>, and
  <tt>Q</tt> is TREESAME to <tt>P</tt>, but not to <tt>Y</tt>.
</p>
</li>
</ul></div>
<div class="paragraph"><p><tt>rev-list</tt> walks backwards through history, including or excluding
commits based on whether <tt>--full-history</tt> and/or parent rewriting
(via <tt>--parents</tt> or <tt>--children</tt>) are used. The following settings
are available.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
Default mode
</dt>
<dd>
<p>
        Commits are included if they are not TREESAME to any parent
        (though this can be changed, see <tt>--sparse</tt> below).  If the
        commit was a merge, and it was TREESAME to one parent, follow
        only that parent.  (Even if there are several TREESAME
        parents, follow only one of them.)  Otherwise, follow all
        parents.
</p>
<div class="paragraph"><p>This results in:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>          .-A---N---O
         /     /   /
        I---------D</tt></pre>
</div></div>
<div class="paragraph"><p>Note how the rule to only follow the TREESAME parent, if one is
available, removed <tt>B</tt> from consideration entirely.  <tt>C</tt> was
considered via <tt>N</tt>, but is TREESAME.  Root commits are compared to an
empty tree, so <tt>I</tt> is !TREESAME.</p></div>
<div class="paragraph"><p>Parent/child relations are only visible with <tt>--parents</tt>, but that does
not affect the commits selected in default mode, so we have shown the
parent lines.</p></div>
</dd>
<dt class="hdlist1">
--full-history without parent rewriting
</dt>
<dd>
<p>
        This mode differs from the default in one point: always follow
        all parents of a merge, even if it is TREESAME to one of them.
        Even if more than one side of the merge has commits that are
        included, this does not imply that the merge itself is!  In
        the example, we get
</p>
<div class="listingblock">
<div class="content">
<pre><tt>        I  A  B  N  D  O  P  Q</tt></pre>
</div></div>
<div class="paragraph"><p><tt>M</tt> was excluded because it is TREESAME to both parents.  <tt>E</tt>,
<tt>C</tt> and <tt>B</tt> were all walked, but only <tt>B</tt> was !TREESAME, so the others
do not appear.</p></div>
<div class="paragraph"><p>Note that without parent rewriting, it is not really possible to talk
about the parent/child relationships between the commits, so we show
them disconnected.</p></div>
</dd>
<dt class="hdlist1">
--full-history with parent rewriting
</dt>
<dd>
<p>
        Ordinary commits are only included if they are !TREESAME
        (though this can be changed, see <tt>--sparse</tt> below).
</p>
<div class="paragraph"><p>Merges are always included.  However, their parent list is rewritten:
Along each parent, prune away commits that are not included
themselves.  This results in</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>          .-A---M---N---O---P---Q
         /     /   /   /   /
        I     B   /   D   /
         \   /   /   /   /
          `-------------'</tt></pre>
</div></div>
<div class="paragraph"><p>Compare to <tt>--full-history</tt> without rewriting above.  Note that <tt>E</tt>
was pruned away because it is TREESAME, but the parent list of P was
rewritten to contain <tt>E</tt>'s parent <tt>I</tt>.  The same happened for <tt>C</tt> and
<tt>N</tt>, and <tt>X</tt>, <tt>Y</tt> and <tt>Q</tt>.</p></div>
</dd>
</dl></div>
<div class="paragraph"><p>In addition to the above settings, you can change whether TREESAME
affects inclusion:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
--dense
</dt>
<dd>
<p>
        Commits that are walked are included if they are not TREESAME
        to any parent.
</p>
</dd>
<dt class="hdlist1">
--sparse
</dt>
<dd>
<p>
        All commits that are walked are included.
</p>
<div class="paragraph"><p>Note that without <tt>--full-history</tt>, this still simplifies merges: if
one of the parents is TREESAME, we follow only that one, so the other
sides of the merge are never walked.</p></div>
</dd>
<dt class="hdlist1">
--simplify-merges
</dt>
<dd>
<p>
        First, build a history graph in the same way that
        <tt>--full-history</tt> with parent rewriting does (see above).
</p>
<div class="paragraph"><p>Then simplify each commit <tt>C</tt> to its replacement <tt>C'</tt> in the final
history according to the following rules:</p></div>
<div class="openblock">
<div class="content">
<div class="ulist"><ul>
<li>
<p>
Set <tt>C'</tt> to <tt>C</tt>.
</p>
</li>
<li>
<p>
Replace each parent <tt>P</tt> of <tt>C'</tt> with its simplification <tt>P'</tt>.  In
  the process, drop parents that are ancestors of other parents or that are
  root commits TREESAME to an empty tree, and remove duplicates, but take care
  to never drop all parents that we are TREESAME to.
</p>
</li>
<li>
<p>
If after this parent rewriting, <tt>C'</tt> is a root or merge commit (has
  zero or &gt;1 parents), a boundary commit, or !TREESAME, it remains.
  Otherwise, it is replaced with its only parent.
</p>
</li>
</ul></div>
</div></div>
<div class="paragraph"><p>The effect of this is best shown by way of comparing to
<tt>--full-history</tt> with parent rewriting.  The example turns into:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>          .-A---M---N---O
         /     /       /
        I     B       D
         \   /       /
          `---------'</tt></pre>
</div></div>
<div class="paragraph"><p>Note the major differences in <tt>N</tt>, <tt>P</tt>, and <tt>Q</tt> over <tt>--full-history</tt>:</p></div>
<div class="openblock">
<div class="content">
<div class="ulist"><ul>
<li>
<p>
<tt>N</tt>'s parent list had <tt>I</tt> removed, because it is an ancestor of the
  other parent <tt>M</tt>.  Still, <tt>N</tt> remained because it is !TREESAME.
</p>
</li>
<li>
<p>
<tt>P</tt>'s parent list similarly had <tt>I</tt> removed.  <tt>P</tt> was then
  removed completely, because it had one parent and is TREESAME.
</p>
</li>
<li>
<p>
<tt>Q</tt>'s parent list had <tt>Y</tt> simplified to <tt>X</tt>. <tt>X</tt> was then removed, because it
  was a TREESAME root. <tt>Q</tt> was then removed completely, because it had one
  parent and is TREESAME.
</p>
</li>
</ul></div>
</div></div>
</dd>
</dl></div>
<div class="paragraph"><p>Finally, there is a fifth simplification mode available:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
--ancestry-path
</dt>
<dd>
<p>
        Limit the displayed commits to those directly on the ancestry
        chain between the &#8220;from&#8221; and &#8220;to&#8221; commits in the given commit
        range. I.e. only display commits that are ancestor of the &#8220;to&#8221;
        commit and descendants of the &#8220;from&#8221; commit.
</p>
<div class="paragraph"><p>As an example use case, consider the following commit history:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>            D---E-------F
           /     \       \
          B---C---G---H---I---J
         /                     \
        A-------K---------------L--M</tt></pre>
</div></div>
<div class="paragraph"><p>A regular <em>D..M</em> computes the set of commits that are ancestors of <tt>M</tt>,
but excludes the ones that are ancestors of <tt>D</tt>. This is useful to see
what happened to the history leading to <tt>M</tt> since <tt>D</tt>, in the sense
that &#8220;what does <tt>M</tt> have that did not exist in <tt>D</tt>&#8221;. The result in this
example would be all the commits, except <tt>A</tt> and <tt>B</tt> (and <tt>D</tt> itself,
of course).</p></div>
<div class="paragraph"><p>When we want to find out what commits in <tt>M</tt> are contaminated with the
bug introduced by <tt>D</tt> and need fixing, however, we might want to view
only the subset of <em>D..M</em> that are actually descendants of <tt>D</tt>, i.e.
excluding <tt>C</tt> and <tt>K</tt>. This is exactly what the <tt>--ancestry-path</tt>
option does. Applied to the <em>D..M</em> range, it results in:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>                E-------F
                 \       \
                  G---H---I---J
                               \
                                L--M</tt></pre>
</div></div>
</dd>
</dl></div>
<div class="paragraph"><p>The <tt>--simplify-by-decoration</tt> option allows you to view only the
big picture of the topology of the history, by omitting commits
that are not referenced by tags.  Commits are marked as !TREESAME
(in other words, kept after history simplification rules described
above) if (1) they are referenced by tags, or (2) they change the
contents of the paths given on the command line.  All other
commits are marked as TREESAME (subject to be simplified away).</p></div>
</div>
<div class="sect2">
<h3 id="_commit_ordering">Commit Ordering</h3>
<div class="paragraph"><p>By default, the commits are shown in reverse chronological order.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
--date-order
</dt>
<dd>
<p>
        Show no parents before all of its children are shown, but
        otherwise show commits in the commit timestamp order.
</p>
</dd>
<dt class="hdlist1">
--author-date-order
</dt>
<dd>
<p>
        Show no parents before all of its children are shown, but
        otherwise show commits in the author timestamp order.
</p>
</dd>
<dt class="hdlist1">
--topo-order
</dt>
<dd>
<p>
        Show no parents before all of its children are shown, and
        avoid showing commits on multiple lines of history
        intermixed.
</p>
<div class="paragraph"><p>For example, in a commit history like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>    ---1----2----4----7
        \              \
         3----5----6----8---</tt></pre>
</div></div>
<div class="paragraph"><p>where the numbers denote the order of commit timestamps, <tt>git
rev-list</tt> and friends with <tt>--date-order</tt> show the commits in the
timestamp order: 8 7 6 5 4 3 2 1.</p></div>
<div class="paragraph"><p>With <tt>--topo-order</tt>, they would show 8 6 5 3 7 4 2 1 (or 8 7 4 2 6 5
3 1); some older commits are shown before newer ones in order to
avoid showing the commits from two parallel development track mixed
together.</p></div>
</dd>
<dt class="hdlist1">
--reverse
</dt>
<dd>
<p>
        Output the commits in reverse order.
        Cannot be combined with <tt>--walk-reflogs</tt>.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_object_traversal">Object Traversal</h3>
<div class="paragraph"><p>These options are mostly targeted for packing of Git repositories.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
--objects
</dt>
<dd>
<p>
        Print the object IDs of any object referenced by the listed
        commits.  <tt>--objects foo ^bar</tt> thus means &#8220;send me
        all object IDs which I need to download if I have the commit
        object <em>bar</em> but not <em>foo</em>&#8221;.
</p>
</dd>
<dt class="hdlist1">
--objects-edge
</dt>
<dd>
<p>
        Similar to <tt>--objects</tt>, but also print the IDs of excluded
        commits prefixed with a &#8220;-&#8221; character.  This is used by
        <a href="git-pack-objects.html">git-pack-objects(1)</a> to build &#8220;thin&#8221; pack, which records
        objects in deltified form based on objects contained in these
        excluded commits to reduce network traffic.
</p>
</dd>
<dt class="hdlist1">
--unpacked
</dt>
<dd>
<p>
        Only useful with <tt>--objects</tt>; print the object IDs that are not
        in packs.
</p>
</dd>
<dt class="hdlist1">
--no-walk[=(sorted|unsorted)]
</dt>
<dd>
<p>
        Only show the given commits, but do not traverse their ancestors.
        This has no effect if a range is specified. If the argument
        <tt>unsorted</tt> is given, the commits are shown in the order they were
        given on the command line. Otherwise (if <tt>sorted</tt> or no argument
        was given), the commits are shown in reverse chronological order
        by commit time.
</p>
</dd>
<dt class="hdlist1">
--do-walk
</dt>
<dd>
<p>
        Overrides a previous <tt>--no-walk</tt>.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_commit_formatting">Commit Formatting</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
--pretty[=&lt;format&gt;]
</dt>
<dt class="hdlist1">
--format=&lt;format&gt;
</dt>
<dd>
<p>
        Pretty-print the contents of the commit logs in a given format,
        where <em>&lt;format&gt;</em> can be one of <em>oneline</em>, <em>short</em>, <em>medium</em>,
        <em>full</em>, <em>fuller</em>, <em>email</em>, <em>raw</em> and <em>format:&lt;string&gt;</em>.  See
        the "PRETTY FORMATS" section for some additional details for each
        format.  When omitted, the format defaults to <em>medium</em>.
</p>
<div class="paragraph"><p>Note: you can specify the default pretty format in the repository
configuration (see <a href="git-config.html">git-config(1)</a>).</p></div>
</dd>
<dt class="hdlist1">
--abbrev-commit
</dt>
<dd>
<p>
        Instead of showing the full 40-byte hexadecimal commit object
        name, show only a partial prefix.  Non default number of
        digits can be specified with "--abbrev=&lt;n&gt;" (which also modifies
        diff output, if it is displayed).
</p>
<div class="paragraph"><p>This should make "--pretty=oneline" a whole lot more readable for
people using 80-column terminals.</p></div>
</dd>
<dt class="hdlist1">
--no-abbrev-commit
</dt>
<dd>
<p>
        Show the full 40-byte hexadecimal commit object name. This negates
        <tt>--abbrev-commit</tt> and those options which imply it such as
        "--oneline". It also overrides the <em>log.abbrevCommit</em> variable.
</p>
</dd>
<dt class="hdlist1">
--oneline
</dt>
<dd>
<p>
        This is a shorthand for "--pretty=oneline --abbrev-commit"
        used together.
</p>
</dd>
<dt class="hdlist1">
--encoding=&lt;encoding&gt;
</dt>
<dd>
<p>
        The commit objects record the encoding used for the log message
        in their encoding header; this option can be used to tell the
        command to re-code the commit log message in the encoding
        preferred by the user.  For non plumbing commands this
        defaults to UTF-8.
</p>
</dd>
<dt class="hdlist1">
--notes[=&lt;ref&gt;]
</dt>
<dd>
<p>
        Show the notes (see <a href="git-notes.html">git-notes(1)</a>) that annotate the
        commit, when showing the commit log message.  This is the default
        for <tt>git log</tt>, <tt>git show</tt> and <tt>git whatchanged</tt> commands when
        there is no <tt>--pretty</tt>, <tt>--format</tt>, or <tt>--oneline</tt> option given
        on the command line.
</p>
<div class="paragraph"><p>By default, the notes shown are from the notes refs listed in the
<em>core.notesRef</em> and <em>notes.displayRef</em> variables (or corresponding
environment overrides). See <a href="git-config.html">git-config(1)</a> for more details.</p></div>
<div class="paragraph"><p>With an optional <em>&lt;ref&gt;</em> argument, show this notes ref instead of the
default notes ref(s). The ref is taken to be in <tt>refs/notes/</tt> if it
is not qualified.</p></div>
<div class="paragraph"><p>Multiple --notes options can be combined to control which notes are
being displayed. Examples: "--notes=foo" will show only notes from
"refs/notes/foo"; "--notes=foo --notes" will show both notes from
"refs/notes/foo" and from the default notes ref(s).</p></div>
</dd>
<dt class="hdlist1">
--no-notes
</dt>
<dd>
<p>
        Do not show notes. This negates the above <tt>--notes</tt> option, by
        resetting the list of notes refs from which notes are shown.
        Options are parsed in the order given on the command line, so e.g.
        "--notes --notes=foo --no-notes --notes=bar" will only show notes
        from "refs/notes/bar".
</p>
</dd>
<dt class="hdlist1">
--show-notes[=&lt;ref&gt;]
</dt>
<dt class="hdlist1">
--[no-]standard-notes
</dt>
<dd>
<p>
        These options are deprecated. Use the above --notes/--no-notes
        options instead.
</p>
</dd>
<dt class="hdlist1">
--show-signature
</dt>
<dd>
<p>
        Check the validity of a signed commit object by passing the signature
        to <tt>gpg --verify</tt> and show the output.
</p>
</dd>
<dt class="hdlist1">
--relative-date
</dt>
<dd>
<p>
        Synonym for <tt>--date=relative</tt>.
</p>
</dd>
<dt class="hdlist1">
--date=(relative|local|default|iso|rfc|short|raw)
</dt>
<dd>
<p>
        Only takes effect for dates shown in human-readable format, such
        as when using <tt>--pretty</tt>. <tt>log.date</tt> config variable sets a default
        value for the log command&#8217;s <tt>--date</tt> option.
</p>
<div class="paragraph"><p><tt>--date=relative</tt> shows dates relative to the current time,
e.g. &#8220;2 hours ago&#8221;.</p></div>
<div class="paragraph"><p><tt>--date=local</tt> shows timestamps in user&#8217;s local time zone.</p></div>
<div class="paragraph"><p><tt>--date=iso</tt> (or <tt>--date=iso8601</tt>) shows timestamps in ISO 8601 format.</p></div>
<div class="paragraph"><p><tt>--date=rfc</tt> (or <tt>--date=rfc2822</tt>) shows timestamps in RFC 2822
format, often found in email messages.</p></div>
<div class="paragraph"><p><tt>--date=short</tt> shows only the date, but not the time, in <tt>YYYY-MM-DD</tt> format.</p></div>
<div class="paragraph"><p><tt>--date=raw</tt> shows the date in the internal raw Git format <tt>%s %z</tt> format.</p></div>
<div class="paragraph"><p><tt>--date=default</tt> shows timestamps in the original time zone
(either committer&#8217;s or author&#8217;s).</p></div>
</dd>
<dt class="hdlist1">
--parents
</dt>
<dd>
<p>
        Print also the parents of the commit (in the form "commit parent&#8230;").
        Also enables parent rewriting, see <em>History Simplification</em> below.
</p>
</dd>
<dt class="hdlist1">
--children
</dt>
<dd>
<p>
        Print also the children of the commit (in the form "commit child&#8230;").
        Also enables parent rewriting, see <em>History Simplification</em> below.
</p>
</dd>
<dt class="hdlist1">
--left-right
</dt>
<dd>
<p>
        Mark which side of a symmetric diff a commit is reachable from.
        Commits from the left side are prefixed with <tt>&lt;</tt> and those from
        the right with <tt>&gt;</tt>.  If combined with <tt>--boundary</tt>, those
        commits are prefixed with <tt>-</tt>.
</p>
<div class="paragraph"><p>For example, if you have this topology:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>             y---b---b  branch B
            / \ /
           /   .
          /   / \
         o---x---a---a  branch A</tt></pre>
</div></div>
<div class="paragraph"><p>you would get an output like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>        $ git rev-list --left-right --boundary --pretty=oneline A...B

        &gt;bbbbbbb... 3rd on b
        &gt;bbbbbbb... 2nd on b
        &lt;aaaaaaa... 3rd on a
        &lt;aaaaaaa... 2nd on a
        -yyyyyyy... 1st on b
        -xxxxxxx... 1st on a</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
--graph
</dt>
<dd>
<p>
        Draw a text-based graphical representation of the commit history
        on the left hand side of the output.  This may cause extra lines
        to be printed in between commits, in order for the graph history
        to be drawn properly.
</p>
<div class="paragraph"><p>This enables parent rewriting, see <em>History Simplification</em> below.</p></div>
<div class="paragraph"><p>This implies the <tt>--topo-order</tt> option by default, but the
<tt>--date-order</tt> option may also be specified.</p></div>
</dd>
<dt class="hdlist1">
--show-linear-break[=&lt;barrier&gt;]
</dt>
<dd>
<p>
        When --graph is not used, all history branches are flattened
        which can make it hard to see that the two consecutive commits
        do not belong to a linear branch. This option puts a barrier
        in between them in that case. If <tt>&lt;barrier&gt;</tt> is specified, it
        is the string that will be shown instead of the default one.
</p>
</dd>
</dl></div>
</div>
<div class="sect2">
<h3 id="_diff_formatting">Diff Formatting</h3>
<div class="paragraph"><p>Listed below are options that control the formatting of diff output.
Some of them are specific to <a href="git-rev-list.html">git-rev-list(1)</a>, however other diff
options may be given. See <a href="git-diff-files.html">git-diff-files(1)</a> for more options.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-c
</dt>
<dd>
<p>
        With this option, diff output for a merge commit
        shows the differences from each of the parents to the merge result
        simultaneously instead of showing pairwise diff between a parent
        and the result one at a time. Furthermore, it lists only files
        which were modified from all parents.
</p>
</dd>
<dt class="hdlist1">
--cc
</dt>
<dd>
<p>
        This flag implies the <tt>-c</tt> option and further compresses the
        patch output by omitting uninteresting hunks whose contents in
        the parents have only two variants and the merge result picks
        one of them without modification.
</p>
</dd>
<dt class="hdlist1">
-m
</dt>
<dd>
<p>
        This flag makes the merge commits show the full diff like
        regular commits; for each merge parent, a separate log entry
        and diff is generated. An exception is that only diff against
        the first parent is shown when <tt>--first-parent</tt> option is given;
        in that case, the output represents the changes the merge
        brought <em>into</em> the then-current branch.
</p>
</dd>
<dt class="hdlist1">
-r
</dt>
<dd>
<p>
        Show recursive diffs.
</p>
</dd>
<dt class="hdlist1">
-t
</dt>
<dd>
<p>
        Show the tree objects in the diff output. This implies <tt>-r</tt>.
</p>
</dd>
</dl></div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_pretty_formats">PRETTY FORMATS</h2>
<div class="sectionbody">
<div class="paragraph"><p>If the commit is a merge, and if the pretty-format
is not <em>oneline</em>, <em>email</em> or <em>raw</em>, an additional line is
inserted before the <em>Author:</em> line.  This line begins with
"Merge: " and the sha1s of ancestral commits are printed,
separated by spaces.  Note that the listed commits may not
necessarily be the list of the <strong>direct</strong> parent commits if you
have limited your view of history: for example, if you are
only interested in changes related to a certain directory or
file.</p></div>
<div class="paragraph"><p>There are several built-in formats, and you can define
additional formats by setting a pretty.&lt;name&gt;
config option to either another format name, or a
<em>format:</em> string, as described below (see
<a href="git-config.html">git-config(1)</a>). Here are the details of the
built-in formats:</p></div>
<div class="ulist"><ul>
<li>
<p>
<em>oneline</em>
</p>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;sha1&gt; &lt;title line&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>This is designed to be as compact as possible.</p></div>
</li>
<li>
<p>
<em>short</em>
</p>
<div class="literalblock">
<div class="content">
<pre><tt>commit &lt;sha1&gt;
Author: &lt;author&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;title line&gt;</tt></pre>
</div></div>
</li>
<li>
<p>
<em>medium</em>
</p>
<div class="literalblock">
<div class="content">
<pre><tt>commit &lt;sha1&gt;
Author: &lt;author&gt;
Date:   &lt;author date&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;title line&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;full commit message&gt;</tt></pre>
</div></div>
</li>
<li>
<p>
<em>full</em>
</p>
<div class="literalblock">
<div class="content">
<pre><tt>commit &lt;sha1&gt;
Author: &lt;author&gt;
Commit: &lt;committer&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;title line&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;full commit message&gt;</tt></pre>
</div></div>
</li>
<li>
<p>
<em>fuller</em>
</p>
<div class="literalblock">
<div class="content">
<pre><tt>commit &lt;sha1&gt;
Author:     &lt;author&gt;
AuthorDate: &lt;author date&gt;
Commit:     &lt;committer&gt;
CommitDate: &lt;committer date&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;title line&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;full commit message&gt;</tt></pre>
</div></div>
</li>
<li>
<p>
<em>email</em>
</p>
<div class="literalblock">
<div class="content">
<pre><tt>From &lt;sha1&gt; &lt;date&gt;
From: &lt;author&gt;
Date: &lt;author date&gt;
Subject: [PATCH] &lt;title line&gt;</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;full commit message&gt;</tt></pre>
</div></div>
</li>
<li>
<p>
<em>raw</em>
</p>
<div class="paragraph"><p>The <em>raw</em> format shows the entire commit exactly as
stored in the commit object.  Notably, the SHA-1s are
displayed in full, regardless of whether --abbrev or
--no-abbrev are used, and <em>parents</em> information show the
true parent commits, without taking grafts or history
simplification into account.</p></div>
</li>
<li>
<p>
<em>format:&lt;string&gt;</em>
</p>
<div class="paragraph"><p>The <em>format:&lt;string&gt;</em> format allows you to specify which information
you want to show. It works a little bit like printf format,
with the notable exception that you get a newline with <em>%n</em>
instead of <em>\n</em>.</p></div>
<div class="paragraph"><p>E.g, <em>format:"The author of %h was %an, %ar%nThe title was &gt;&gt;%s&lt;&lt;%n"</em>
would show something like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was &gt;&gt;t4119: test autocomputing -p&lt;n&gt; for traditional diff input.&lt;&lt;</tt></pre>
</div></div>
<div class="paragraph"><p>The placeholders are:</p></div>
<div class="ulist"><ul>
<li>
<p>
<em>%H</em>: commit hash
</p>
</li>
<li>
<p>
<em>%h</em>: abbreviated commit hash
</p>
</li>
<li>
<p>
<em>%T</em>: tree hash
</p>
</li>
<li>
<p>
<em>%t</em>: abbreviated tree hash
</p>
</li>
<li>
<p>
<em>%P</em>: parent hashes
</p>
</li>
<li>
<p>
<em>%p</em>: abbreviated parent hashes
</p>
</li>
<li>
<p>
<em>%an</em>: author name
</p>
</li>
<li>
<p>
<em>%aN</em>: author name (respecting .mailmap, see <a href="git-shortlog.html">git-shortlog(1)</a>
  or <a href="git-blame.html">git-blame(1)</a>)
</p>
</li>
<li>
<p>
<em>%ae</em>: author email
</p>
</li>
<li>
<p>
<em>%aE</em>: author email (respecting .mailmap, see
  <a href="git-shortlog.html">git-shortlog(1)</a> or <a href="git-blame.html">git-blame(1)</a>)
</p>
</li>
<li>
<p>
<em>%ad</em>: author date (format respects --date= option)
</p>
</li>
<li>
<p>
<em>%aD</em>: author date, RFC2822 style
</p>
</li>
<li>
<p>
<em>%ar</em>: author date, relative
</p>
</li>
<li>
<p>
<em>%at</em>: author date, UNIX timestamp
</p>
</li>
<li>
<p>
<em>%ai</em>: author date, ISO 8601 format
</p>
</li>
<li>
<p>
<em>%cn</em>: committer name
</p>
</li>
<li>
<p>
<em>%cN</em>: committer name (respecting .mailmap, see
  <a href="git-shortlog.html">git-shortlog(1)</a> or <a href="git-blame.html">git-blame(1)</a>)
</p>
</li>
<li>
<p>
<em>%ce</em>: committer email
</p>
</li>
<li>
<p>
<em>%cE</em>: committer email (respecting .mailmap, see
  <a href="git-shortlog.html">git-shortlog(1)</a> or <a href="git-blame.html">git-blame(1)</a>)
</p>
</li>
<li>
<p>
<em>%cd</em>: committer date
</p>
</li>
<li>
<p>
<em>%cD</em>: committer date, RFC2822 style
</p>
</li>
<li>
<p>
<em>%cr</em>: committer date, relative
</p>
</li>
<li>
<p>
<em>%ct</em>: committer date, UNIX timestamp
</p>
</li>
<li>
<p>
<em>%ci</em>: committer date, ISO 8601 format
</p>
</li>
<li>
<p>
<em>%d</em>: ref names, like the --decorate option of <a href="git-log.html">git-log(1)</a>
</p>
</li>
<li>
<p>
<em>%e</em>: encoding
</p>
</li>
<li>
<p>
<em>%s</em>: subject
</p>
</li>
<li>
<p>
<em>%f</em>: sanitized subject line, suitable for a filename
</p>
</li>
<li>
<p>
<em>%b</em>: body
</p>
</li>
<li>
<p>
<em>%B</em>: raw body (unwrapped subject and body)
</p>
</li>
<li>
<p>
<em>%N</em>: commit notes
</p>
</li>
<li>
<p>
<em>%GG</em>: raw verification message from GPG for a signed commit
</p>
</li>
<li>
<p>
<em>%G?</em>: show "G" for a Good signature, "B" for a Bad signature, "U" for a good,
  untrusted signature and "N" for no signature
</p>
</li>
<li>
<p>
<em>%GS</em>: show the name of the signer for a signed commit
</p>
</li>
<li>
<p>
<em>%GK</em>: show the key used to sign a signed commit
</p>
</li>
<li>
<p>
<em>%gD</em>: reflog selector, e.g., <tt>refs/stash@{1}</tt>
</p>
</li>
<li>
<p>
<em>%gd</em>: shortened reflog selector, e.g., <tt>stash@{1}</tt>
</p>
</li>
<li>
<p>
<em>%gn</em>: reflog identity name
</p>
</li>
<li>
<p>
<em>%gN</em>: reflog identity name (respecting .mailmap, see
  <a href="git-shortlog.html">git-shortlog(1)</a> or <a href="git-blame.html">git-blame(1)</a>)
</p>
</li>
<li>
<p>
<em>%ge</em>: reflog identity email
</p>
</li>
<li>
<p>
<em>%gE</em>: reflog identity email (respecting .mailmap, see
  <a href="git-shortlog.html">git-shortlog(1)</a> or <a href="git-blame.html">git-blame(1)</a>)
</p>
</li>
<li>
<p>
<em>%gs</em>: reflog subject
</p>
</li>
<li>
<p>
<em>%Cred</em>: switch color to red
</p>
</li>
<li>
<p>
<em>%Cgreen</em>: switch color to green
</p>
</li>
<li>
<p>
<em>%Cblue</em>: switch color to blue
</p>
</li>
<li>
<p>
<em>%Creset</em>: reset color
</p>
</li>
<li>
<p>
<em>%C(&#8230;)</em>: color specification, as described in color.branch.* config option;
  adding <tt>auto,</tt> at the beginning will emit color only when colors are
  enabled for log output (by <tt>color.diff</tt>, <tt>color.ui</tt>, or <tt>--color</tt>, and
  respecting the <tt>auto</tt> settings of the former if we are going to a
  terminal). <tt>auto</tt> alone (i.e. <tt>%C(auto)</tt>) will turn on auto coloring
  on the next placeholders until the color is switched again.
</p>
</li>
<li>
<p>
<em>%m</em>: left, right or boundary mark
</p>
</li>
<li>
<p>
<em>%n</em>: newline
</p>
</li>
<li>
<p>
<em>%%</em>: a raw <em>%</em>
</p>
</li>
<li>
<p>
<em>%x00</em>: print a byte from a hex code
</p>
</li>
<li>
<p>
<em>%w([&lt;w&gt;[,&lt;i1&gt;[,&lt;i2&gt;]]])</em>: switch line wrapping, like the -w option of
  <a href="git-shortlog.html">git-shortlog(1)</a>.
</p>
</li>
<li>
<p>
<em>%&lt;(&lt;N&gt;[,trunc|ltrunc|mtrunc])</em>: make the next placeholder take at
  least N columns, padding spaces on the right if necessary.
  Optionally truncate at the beginning (ltrunc), the middle (mtrunc)
  or the end (trunc) if the output is longer than N columns.
  Note that truncating only works correctly with N &gt;= 2.
</p>
</li>
<li>
<p>
<em>%&lt;|(&lt;N&gt;)</em>: make the next placeholder take at least until Nth
  columns, padding spaces on the right if necessary
</p>
</li>
<li>
<p>
<em>%&gt;(&lt;N&gt;)</em>, <em>%&gt;|(&lt;N&gt;)</em>: similar to <em>%&lt;(&lt;N&gt;)</em>, <em>%&lt;|(&lt;N&gt;)</em>
  respectively, but padding spaces on the left
</p>
</li>
<li>
<p>
<em>%&gt;&gt;(&lt;N&gt;)</em>, <em>%&gt;&gt;|(&lt;N&gt;)</em>: similar to <em>%&gt;(&lt;N&gt;)</em>, <em>%&gt;|(&lt;N&gt;)</em>
  respectively, except that if the next placeholder takes more spaces
  than given and there are spaces on its left, use those spaces
</p>
</li>
<li>
<p>
<em>%&gt;&lt;(&lt;N&gt;)</em>, <em>%&gt;&lt;|(&lt;N&gt;)</em>: similar to <em>% &lt;(&lt;N&gt;)</em>, <em>%&lt;|(&lt;N&gt;)</em>
  respectively, but padding both sides (i.e. the text is centered)
</p>
</li>
</ul></div>
</li>
</ul></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">Some placeholders may depend on other options given to the
revision traversal engine. For example, the <tt>%g*</tt> reflog options will
insert an empty string unless we are traversing reflog entries (e.g., by
<tt>git log -g</tt>). The <tt>%d</tt> placeholder will use the "short" decoration
format if <tt>--decorate</tt> was not already provided on the command line.</td>
</tr></table>
</div>
<div class="paragraph"><p>If you add a <tt>+</tt> (plus sign) after <em>%</em> of a placeholder, a line-feed
is inserted immediately before the expansion if and only if the
placeholder expands to a non-empty string.</p></div>
<div class="paragraph"><p>If you add a <tt>-</tt> (minus sign) after <em>%</em> of a placeholder, line-feeds that
immediately precede the expansion are deleted if and only if the
placeholder expands to an empty string.</p></div>
<div class="paragraph"><p>If you add a ` ` (space) after <em>%</em> of a placeholder, a space
is inserted immediately before the expansion if and only if the
placeholder expands to a non-empty string.</p></div>
<div class="ulist"><ul>
<li>
<p>
<em>tformat:</em>
</p>
<div class="paragraph"><p>The <em>tformat:</em> format works exactly like <em>format:</em>, except that it
provides "terminator" semantics instead of "separator" semantics. In
other words, each commit has the message terminator character (usually a
newline) appended, rather than a separator placed between entries.
This means that the final entry of a single-line format will be properly
terminated with a new line, just as the "oneline" format does.
For example:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ git log -2 --pretty=format:%h 4da45bef \
  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
4da45be
7134973 -- NO NEWLINE

$ git log -2 --pretty=tformat:%h 4da45bef \
  | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
4da45be
7134973</tt></pre>
</div></div>
<div class="paragraph"><p>In addition, any unrecognized string that has a <tt>%</tt> in it is interpreted
as if it has <tt>tformat:</tt> in front of it.  For example, these two are
equivalent:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ git log -2 --pretty=tformat:%h 4da45bef
$ git log -2 --pretty=%h 4da45bef</tt></pre>
</div></div>
</li>
</ul></div>
</div>
</div>
<div class="sect1">
<h2 id="_common_diff_options">COMMON DIFF OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
-u
</dt>
<dt class="hdlist1">
--patch
</dt>
<dd>
<p>
        Generate patch (see section on generating patches).
        
</p>
</dd>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--no-patch
</dt>
<dd>
<p>
        Suppress diff output. Useful for commands like <tt>git show</tt> that
        show the patch by default, or to cancel the effect of <tt>--patch</tt>.
</p>
</dd>
<dt class="hdlist1">
-U&lt;n&gt;
</dt>
<dt class="hdlist1">
--unified=&lt;n&gt;
</dt>
<dd>
<p>
        Generate diffs with &lt;n&gt; lines of context instead of
        the usual three.
        Implies <tt>-p</tt>.
</p>
</dd>
<dt class="hdlist1">
--raw
</dt>
<dd>
<p>
        Generate the raw format.
        
</p>
</dd>
<dt class="hdlist1">
--patch-with-raw
</dt>
<dd>
<p>
        Synonym for <tt>-p --raw</tt>.
</p>
</dd>
<dt class="hdlist1">
--minimal
</dt>
<dd>
<p>
        Spend extra time to make sure the smallest possible
        diff is produced.
</p>
</dd>
<dt class="hdlist1">
--patience
</dt>
<dd>
<p>
        Generate a diff using the "patience diff" algorithm.
</p>
</dd>
<dt class="hdlist1">
--histogram
</dt>
<dd>
<p>
        Generate a diff using the "histogram diff" algorithm.
</p>
</dd>
<dt class="hdlist1">
--diff-algorithm={patience|minimal|histogram|myers}
</dt>
<dd>
<p>
        Choose a diff algorithm. The variants are as follows:
</p>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
<tt>default</tt>, <tt>myers</tt>
</dt>
<dd>
<p>
        The basic greedy diff algorithm. Currently, this is the default.
</p>
</dd>
<dt class="hdlist1">
<tt>minimal</tt>
</dt>
<dd>
<p>
        Spend extra time to make sure the smallest possible diff is
        produced.
</p>
</dd>
<dt class="hdlist1">
<tt>patience</tt>
</dt>
<dd>
<p>
        Use "patience diff" algorithm when generating patches.
</p>
</dd>
<dt class="hdlist1">
<tt>histogram</tt>
</dt>
<dd>
<p>
        This algorithm extends the patience algorithm to "support
        low-occurrence common elements".
</p>
</dd>
</dl></div>
</div></div>
<div class="paragraph"><p>For instance, if you configured diff.algorithm variable to a
non-default value and want to use the default one, then you
have to use <tt>--diff-algorithm=default</tt> option.</p></div>
</dd>
<dt class="hdlist1">
--stat[=&lt;width&gt;[,&lt;name-width&gt;[,&lt;count&gt;]]]
</dt>
<dd>
<p>
        Generate a diffstat. By default, as much space as necessary
        will be used for the filename part, and the rest for the graph
        part. Maximum width defaults to terminal width, or 80 columns
        if not connected to a terminal, and can be overridden by
        <tt>&lt;width&gt;</tt>. The width of the filename part can be limited by
        giving another width <tt>&lt;name-width&gt;</tt> after a comma. The width
        of the graph part can be limited by using
        <tt>--stat-graph-width=&lt;width&gt;</tt> (affects all commands generating
        a stat graph) or by setting <tt>diff.statGraphWidth=&lt;width&gt;</tt>
        (does not affect <tt>git format-patch</tt>).
        By giving a third parameter <tt>&lt;count&gt;</tt>, you can limit the
        output to the first <tt>&lt;count&gt;</tt> lines, followed by <tt>...</tt> if
        there are more.
</p>
<div class="paragraph"><p>These parameters can also be set individually with <tt>--stat-width=&lt;width&gt;</tt>,
<tt>--stat-name-width=&lt;name-width&gt;</tt> and <tt>--stat-count=&lt;count&gt;</tt>.</p></div>
</dd>
<dt class="hdlist1">
--numstat
</dt>
<dd>
<p>
        Similar to <tt>--stat</tt>, but shows number of added and
        deleted lines in decimal notation and pathname without
        abbreviation, to make it more machine friendly.  For
        binary files, outputs two <tt>-</tt> instead of saying
        <tt>0 0</tt>.
</p>
</dd>
<dt class="hdlist1">
--shortstat
</dt>
<dd>
<p>
        Output only the last line of the <tt>--stat</tt> format containing total
        number of modified files, as well as number of added and deleted
        lines.
</p>
</dd>
<dt class="hdlist1">
--dirstat[=&lt;param1,param2,&#8230;&gt;]
</dt>
<dd>
<p>
        Output the distribution of relative amount of changes for each
        sub-directory. The behavior of <tt>--dirstat</tt> can be customized by
        passing it a comma separated list of parameters.
        The defaults are controlled by the <tt>diff.dirstat</tt> configuration
        variable (see <a href="git-config.html">git-config(1)</a>).
        The following parameters are available:
</p>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
<tt>changes</tt>
</dt>
<dd>
<p>
        Compute the dirstat numbers by counting the lines that have been
        removed from the source, or added to the destination. This ignores
        the amount of pure code movements within a file.  In other words,
        rearranging lines in a file is not counted as much as other changes.
        This is the default behavior when no parameter is given.
</p>
</dd>
<dt class="hdlist1">
<tt>lines</tt>
</dt>
<dd>
<p>
        Compute the dirstat numbers by doing the regular line-based diff
        analysis, and summing the removed/added line counts. (For binary
        files, count 64-byte chunks instead, since binary files have no
        natural concept of lines). This is a more expensive <tt>--dirstat</tt>
        behavior than the <tt>changes</tt> behavior, but it does count rearranged
        lines within a file as much as other changes. The resulting output
        is consistent with what you get from the other <tt>--*stat</tt> options.
</p>
</dd>
<dt class="hdlist1">
<tt>files</tt>
</dt>
<dd>
<p>
        Compute the dirstat numbers by counting the number of files changed.
        Each changed file counts equally in the dirstat analysis. This is
        the computationally cheapest <tt>--dirstat</tt> behavior, since it does
        not have to look at the file contents at all.
</p>
</dd>
<dt class="hdlist1">
<tt>cumulative</tt>
</dt>
<dd>
<p>
        Count changes in a child directory for the parent directory as well.
        Note that when using <tt>cumulative</tt>, the sum of the percentages
        reported may exceed 100%. The default (non-cumulative) behavior can
        be specified with the <tt>noncumulative</tt> parameter.
</p>
</dd>
<dt class="hdlist1">
&lt;limit&gt;
</dt>
<dd>
<p>
        An integer parameter specifies a cut-off percent (3% by default).
        Directories contributing less than this percentage of the changes
        are not shown in the output.
</p>
</dd>
</dl></div>
</div></div>
<div class="paragraph"><p>Example: The following will count changed files, while ignoring
directories with less than 10% of the total amount of changed files,
and accumulating child directory counts in the parent directories:
<tt>--dirstat=files,10,cumulative</tt>.</p></div>
</dd>
<dt class="hdlist1">
--summary
</dt>
<dd>
<p>
        Output a condensed summary of extended header information
        such as creations, renames and mode changes.
</p>
</dd>
<dt class="hdlist1">
--patch-with-stat
</dt>
<dd>
<p>
        Synonym for <tt>-p --stat</tt>.
</p>
</dd>
<dt class="hdlist1">
-z
</dt>
<dd>
<p>
        Separate the commits with NULs instead of with new newlines.
</p>
<div class="paragraph"><p>Also, when <tt>--raw</tt> or <tt>--numstat</tt> has been given, do not munge
pathnames and use NULs as output field terminators.</p></div>
<div class="paragraph"><p>Without this option, each pathname output will have TAB, LF, double quotes,
and backslash characters replaced with <tt>\t</tt>, <tt>\n</tt>, <tt>\"</tt>, and <tt>\\</tt>,
respectively, and the pathname will be enclosed in double quotes if
any of those replacements occurred.</p></div>
</dd>
<dt class="hdlist1">
--name-only
</dt>
<dd>
<p>
        Show only names of changed files.
</p>
</dd>
<dt class="hdlist1">
--name-status
</dt>
<dd>
<p>
        Show only names and status of changed files. See the description
        of the <tt>--diff-filter</tt> option on what the status letters mean.
</p>
</dd>
<dt class="hdlist1">
--submodule[=&lt;format&gt;]
</dt>
<dd>
<p>
        Specify how differences in submodules are shown.  When <tt>--submodule</tt>
        or <tt>--submodule=log</tt> is given, the <em>log</em> format is used.  This format lists
        the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <tt>summary</tt> does.
        Omitting the <tt>--submodule</tt> option or specifying <tt>--submodule=short</tt>,
        uses the <em>short</em> format. This format just shows the names of the commits
        at the beginning and end of the range.  Can be tweaked via the
        <tt>diff.submodule</tt> configuration variable.
</p>
</dd>
<dt class="hdlist1">
--color[=&lt;when&gt;]
</dt>
<dd>
<p>
        Show colored diff.
        <tt>--color</tt> (i.e. without <em>=&lt;when&gt;</em>) is the same as <tt>--color=always</tt>.
        <em>&lt;when&gt;</em> can be one of <tt>always</tt>, <tt>never</tt>, or <tt>auto</tt>.
</p>
</dd>
<dt class="hdlist1">
--no-color
</dt>
<dd>
<p>
        Turn off colored diff.
        It is the same as <tt>--color=never</tt>.
</p>
</dd>
<dt class="hdlist1">
--word-diff[=&lt;mode&gt;]
</dt>
<dd>
<p>
        Show a word diff, using the &lt;mode&gt; to delimit changed words.
        By default, words are delimited by whitespace; see
        <tt>--word-diff-regex</tt> below.  The &lt;mode&gt; defaults to <em>plain</em>, and
        must be one of:
</p>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
color
</dt>
<dd>
<p>
        Highlight changed words using only colors.  Implies <tt>--color</tt>.
</p>
</dd>
<dt class="hdlist1">
plain
</dt>
<dd>
<p>
        Show words as <tt>[-removed-]</tt> and <tt>{+added+}</tt>.  Makes no
        attempts to escape the delimiters if they appear in the input,
        so the output may be ambiguous.
</p>
</dd>
<dt class="hdlist1">
porcelain
</dt>
<dd>
<p>
        Use a special line-based format intended for script
        consumption.  Added/removed/unchanged runs are printed in the
        usual unified diff format, starting with a <tt>+</tt>/<tt>-</tt>/` `
        character at the beginning of the line and extending to the
        end of the line.  Newlines in the input are represented by a
        tilde <tt>~</tt> on a line of its own.
</p>
</dd>
<dt class="hdlist1">
none
</dt>
<dd>
<p>
        Disable word diff again.
</p>
</dd>
</dl></div>
</div></div>
<div class="paragraph"><p>Note that despite the name of the first mode, color is used to
highlight the changed parts in all modes if enabled.</p></div>
</dd>
<dt class="hdlist1">
--word-diff-regex=&lt;regex&gt;
</dt>
<dd>
<p>
        Use &lt;regex&gt; to decide what a word is, instead of considering
        runs of non-whitespace to be a word.  Also implies
        <tt>--word-diff</tt> unless it was already enabled.
</p>
<div class="paragraph"><p>Every non-overlapping match of the
&lt;regex&gt; is considered a word.  Anything between these matches is
considered whitespace and ignored(!) for the purposes of finding
differences.  You may want to append <tt>|[^[:space:]]</tt> to your regular
expression to make sure that it matches all non-whitespace characters.
A match that contains a newline is silently truncated(!) at the
newline.</p></div>
<div class="paragraph"><p>The regex can also be set via a diff driver or configuration option, see
<a href="gitattributes.html">gitattributes(1)</a> or <a href="git-config.html">git-config(1)</a>.  Giving it explicitly
overrides any diff driver or configuration setting.  Diff drivers
override configuration settings.</p></div>
</dd>
<dt class="hdlist1">
--color-words[=&lt;regex&gt;]
</dt>
<dd>
<p>
        Equivalent to <tt>--word-diff=color</tt> plus (if a regex was
        specified) <tt>--word-diff-regex=&lt;regex&gt;</tt>.
</p>
</dd>
<dt class="hdlist1">
--no-renames
</dt>
<dd>
<p>
        Turn off rename detection, even when the configuration
        file gives the default to do so.
</p>
</dd>
<dt class="hdlist1">
--check
</dt>
<dd>
<p>
        Warn if changes introduce whitespace errors.  What are
        considered whitespace errors is controlled by <tt>core.whitespace</tt>
        configuration.  By default, trailing whitespaces (including
        lines that solely consist of whitespaces) and a space character
        that is immediately followed by a tab character inside the
        initial indent of the line are considered whitespace errors.
        Exits with non-zero status if problems are found. Not compatible
        with --exit-code.
</p>
</dd>
<dt class="hdlist1">
--full-index
</dt>
<dd>
<p>
        Instead of the first handful of characters, show the full
        pre- and post-image blob object names on the "index"
        line when generating patch format output.
</p>
</dd>
<dt class="hdlist1">
--binary
</dt>
<dd>
<p>
        In addition to <tt>--full-index</tt>, output a binary diff that
        can be applied with <tt>git-apply</tt>.
</p>
</dd>
<dt class="hdlist1">
--abbrev[=&lt;n&gt;]
</dt>
<dd>
<p>
        Instead of showing the full 40-byte hexadecimal object
        name in diff-raw format output and diff-tree header
        lines, show only a partial prefix.  This is
        independent of the <tt>--full-index</tt> option above, which controls
        the diff-patch output format.  Non default number of
        digits can be specified with <tt>--abbrev=&lt;n&gt;</tt>.
</p>
</dd>
<dt class="hdlist1">
-B[&lt;n&gt;][/&lt;m&gt;]
</dt>
<dt class="hdlist1">
--break-rewrites[=[&lt;n&gt;][/&lt;m&gt;]]
</dt>
<dd>
<p>
        Break complete rewrite changes into pairs of delete and
        create. This serves two purposes:
</p>
<div class="paragraph"><p>It affects the way a change that amounts to a total rewrite of a file
not as a series of deletion and insertion mixed together with a very
few lines that happen to match textually as the context, but as a
single deletion of everything old followed by a single insertion of
everything new, and the number <tt>m</tt> controls this aspect of the -B
option (defaults to 60%). <tt>-B/70%</tt> specifies that less than 30% of the
original should remain in the result for Git to consider it a total
rewrite (i.e. otherwise the resulting patch will be a series of
deletion and insertion mixed together with context lines).</p></div>
<div class="paragraph"><p>When used with -M, a totally-rewritten file is also considered as the
source of a rename (usually -M only considers a file that disappeared
as the source of a rename), and the number <tt>n</tt> controls this aspect of
the -B option (defaults to 50%). <tt>-B20%</tt> specifies that a change with
addition and deletion compared to 20% or more of the file&#8217;s size are
eligible for being picked up as a possible source of a rename to
another file.</p></div>
</dd>
<dt class="hdlist1">
-M[&lt;n&gt;]
</dt>
<dt class="hdlist1">
--find-renames[=&lt;n&gt;]
</dt>
<dd>
<p>
        If generating diffs, detect and report renames for each commit.
        For following files across renames while traversing history, see
        <tt>--follow</tt>.
        If <tt>n</tt> is specified, it is a threshold on the similarity
        index (i.e. amount of addition/deletions compared to the
        file&#8217;s size). For example, <tt>-M90%</tt> means Git should consider a
        delete/add pair to be a rename if more than 90% of the file
        hasn&#8217;t changed.  Without a <tt>%</tt> sign, the number is to be read as
        a fraction, with a decimal point before it.  I.e., <tt>-M5</tt> becomes
        0.5, and is thus the same as <tt>-M50%</tt>.  Similarly, <tt>-M05</tt> is
        the same as <tt>-M5%</tt>.  To limit detection to exact renames, use
        <tt>-M100%</tt>.  The default similarity index is 50%.
</p>
</dd>
<dt class="hdlist1">
-C[&lt;n&gt;]
</dt>
<dt class="hdlist1">
--find-copies[=&lt;n&gt;]
</dt>
<dd>
<p>
        Detect copies as well as renames.  See also <tt>--find-copies-harder</tt>.
        If <tt>n</tt> is specified, it has the same meaning as for <tt>-M&lt;n&gt;</tt>.
</p>
</dd>
<dt class="hdlist1">
--find-copies-harder
</dt>
<dd>
<p>
        For performance reasons, by default, <tt>-C</tt> option finds copies only
        if the original file of the copy was modified in the same
        changeset.  This flag makes the command
        inspect unmodified files as candidates for the source of
        copy.  This is a very expensive operation for large
        projects, so use it with caution.  Giving more than one
        <tt>-C</tt> option has the same effect.
</p>
</dd>
<dt class="hdlist1">
-D
</dt>
<dt class="hdlist1">
--irreversible-delete
</dt>
<dd>
<p>
        Omit the preimage for deletes, i.e. print only the header but not
        the diff between the preimage and <tt>/dev/null</tt>. The resulting patch
        is not meant to be applied with <tt>patch</tt> or <tt>git apply</tt>; this is
        solely for people who want to just concentrate on reviewing the
        text after the change. In addition, the output obviously lack
        enough information to apply such a patch in reverse, even manually,
        hence the name of the option.
</p>
<div class="paragraph"><p>When used together with <tt>-B</tt>, omit also the preimage in the deletion part
of a delete/create pair.</p></div>
</dd>
<dt class="hdlist1">
-l&lt;num&gt;
</dt>
<dd>
<p>
        The <tt>-M</tt> and <tt>-C</tt> options require O(n^2) processing time where n
        is the number of potential rename/copy targets.  This
        option prevents rename/copy detection from running if
        the number of rename/copy targets exceeds the specified
        number.
</p>
</dd>
<dt class="hdlist1">
--diff-filter=[(A|C|D|M|R|T|U|X|B)&#8230;[*]]
</dt>
<dd>
<p>
        Select only files that are Added (<tt>A</tt>), Copied (<tt>C</tt>),
        Deleted (<tt>D</tt>), Modified (<tt>M</tt>), Renamed (<tt>R</tt>), have their
        type (i.e. regular file, symlink, submodule, &#8230;) changed (<tt>T</tt>),
        are Unmerged (<tt>U</tt>), are
        Unknown (<tt>X</tt>), or have had their pairing Broken (<tt>B</tt>).
        Any combination of the filter characters (including none) can be used.
        When <tt>*</tt> (All-or-none) is added to the combination, all
        paths are selected if there is any file that matches
        other criteria in the comparison; if there is no file
        that matches other criteria, nothing is selected.
</p>
</dd>
<dt class="hdlist1">
-S&lt;string&gt;
</dt>
<dd>
<p>
        Look for differences that change the number of occurrences of
        the specified string (i.e. addition/deletion) in a file.
        Intended for the scripter&#8217;s use.
</p>
<div class="paragraph"><p>It is useful when you&#8217;re looking for an exact block of code (like a
struct), and want to know the history of that block since it first
came into being: use the feature iteratively to feed the interesting
block in the preimage back into <tt>-S</tt>, and keep going until you get the
very first version of the block.</p></div>
</dd>
<dt class="hdlist1">
-G&lt;regex&gt;
</dt>
<dd>
<p>
        Look for differences whose patch text contains added/removed
        lines that match &lt;regex&gt;.
</p>
<div class="paragraph"><p>To illustrate the difference between <tt>-S&lt;regex&gt; --pickaxe-regex</tt> and
<tt>-G&lt;regex&gt;</tt>, consider a commit with the following diff in the same
file:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>+    return !regexec(regexp, two-&gt;ptr, 1, &amp;regmatch, 0);
...
-    hit = !regexec(regexp, mf2.ptr, 1, &amp;regmatch, 0);</tt></pre>
</div></div>
<div class="paragraph"><p>While <tt>git log -G"regexec\(regexp"</tt> will show this commit, <tt>git log
-S"regexec\(regexp" --pickaxe-regex</tt> will not (because the number of
occurrences of that string did not change).</p></div>
<div class="paragraph"><p>See the <em>pickaxe</em> entry in <a href="gitdiffcore.html">gitdiffcore(7)</a> for more
information.</p></div>
</dd>
<dt class="hdlist1">
--pickaxe-all
</dt>
<dd>
<p>
        When <tt>-S</tt> or <tt>-G</tt> finds a change, show all the changes in that
        changeset, not just the files that contain the change
        in &lt;string&gt;.
</p>
</dd>
<dt class="hdlist1">
--pickaxe-regex
</dt>
<dd>
<p>
        Treat the &lt;string&gt; given to <tt>-S</tt> as an extended POSIX regular
        expression to match.
</p>
</dd>
<dt class="hdlist1">
-O&lt;orderfile&gt;
</dt>
<dd>
<p>
        Output the patch in the order specified in the
        &lt;orderfile&gt;, which has one shell glob pattern per line.
        This overrides the <tt>diff.orderfile</tt> configuration variable
        (see <a href="git-config.html">git-config(1)</a>).  To cancel <tt>diff.orderfile</tt>,
        use <tt>-O/dev/null</tt>.
</p>
</dd>
<dt class="hdlist1">
-R
</dt>
<dd>
<p>
        Swap two inputs; that is, show differences from index or
        on-disk file to tree contents.
</p>
</dd>
<dt class="hdlist1">
--relative[=&lt;path&gt;]
</dt>
<dd>
<p>
        When run from a subdirectory of the project, it can be
        told to exclude changes outside the directory and show
        pathnames relative to it with this option.  When you are
        not in a subdirectory (e.g. in a bare repository), you
        can name which subdirectory to make the output relative
        to by giving a &lt;path&gt; as an argument.
</p>
</dd>
<dt class="hdlist1">
-a
</dt>
<dt class="hdlist1">
--text
</dt>
<dd>
<p>
        Treat all files as text.
</p>
</dd>
<dt class="hdlist1">
--ignore-space-at-eol
</dt>
<dd>
<p>
        Ignore changes in whitespace at EOL.
</p>
</dd>
<dt class="hdlist1">
-b
</dt>
<dt class="hdlist1">
--ignore-space-change
</dt>
<dd>
<p>
        Ignore changes in amount of whitespace.  This ignores whitespace
        at line end, and considers all other sequences of one or
        more whitespace characters to be equivalent.
</p>
</dd>
<dt class="hdlist1">
-w
</dt>
<dt class="hdlist1">
--ignore-all-space
</dt>
<dd>
<p>
        Ignore whitespace when comparing lines.  This ignores
        differences even if one line has whitespace where the other
        line has none.
</p>
</dd>
<dt class="hdlist1">
--ignore-blank-lines
</dt>
<dd>
<p>
        Ignore changes whose lines are all blank.
</p>
</dd>
<dt class="hdlist1">
--inter-hunk-context=&lt;lines&gt;
</dt>
<dd>
<p>
        Show the context between diff hunks, up to the specified number
        of lines, thereby fusing hunks that are close to each other.
</p>
</dd>
<dt class="hdlist1">
-W
</dt>
<dt class="hdlist1">
--function-context
</dt>
<dd>
<p>
        Show whole surrounding functions of changes.
</p>
</dd>
<dt class="hdlist1">
--ext-diff
</dt>
<dd>
<p>
        Allow an external diff helper to be executed. If you set an
        external diff driver with <a href="gitattributes.html">gitattributes(5)</a>, you need
        to use this option with <a href="git-log.html">git-log(1)</a> and friends.
</p>
</dd>
<dt class="hdlist1">
--no-ext-diff
</dt>
<dd>
<p>
        Disallow external diff drivers.
</p>
</dd>
<dt class="hdlist1">
--textconv
</dt>
<dt class="hdlist1">
--no-textconv
</dt>
<dd>
<p>
        Allow (or disallow) external text conversion filters to be run
        when comparing binary files. See <a href="gitattributes.html">gitattributes(5)</a> for
        details. Because textconv filters are typically a one-way
        conversion, the resulting diff is suitable for human
        consumption, but cannot be applied. For this reason, textconv
        filters are enabled by default only for <a href="git-diff.html">git-diff(1)</a> and
        <a href="git-log.html">git-log(1)</a>, but not for <a href="git-format-patch.html">git-format-patch(1)</a> or
        diff plumbing commands.
</p>
</dd>
<dt class="hdlist1">
--ignore-submodules[=&lt;when&gt;]
</dt>
<dd>
<p>
        Ignore changes to submodules in the diff generation. &lt;when&gt; can be
        either "none", "untracked", "dirty" or "all", which is the default.
        Using "none" will consider the submodule modified when it either contains
        untracked or modified files or its HEAD differs from the commit recorded
        in the superproject and can be used to override any settings of the
        <em>ignore</em> option in <a href="git-config.html">git-config(1)</a> or <a href="gitmodules.html">gitmodules(5)</a>. When
        "untracked" is used submodules are not considered dirty when they only
        contain untracked content (but they are still scanned for modified
        content). Using "dirty" ignores all changes to the work tree of submodules,
        only changes to the commits stored in the superproject are shown (this was
        the behavior until 1.7.0). Using "all" hides all changes to submodules.
</p>
</dd>
<dt class="hdlist1">
--src-prefix=&lt;prefix&gt;
</dt>
<dd>
<p>
        Show the given source prefix instead of "a/".
</p>
</dd>
<dt class="hdlist1">
--dst-prefix=&lt;prefix&gt;
</dt>
<dd>
<p>
        Show the given destination prefix instead of "b/".
</p>
</dd>
<dt class="hdlist1">
--no-prefix
</dt>
<dd>
<p>
        Do not show any source or destination prefix.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>For more detailed explanation on these common options, see also
<a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_generating_patches_with_p">Generating patches with -p</h2>
<div class="sectionbody">
<div class="paragraph"><p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
with a <em>-p</em> option, "git diff" without the <em>--raw</em> option, or
"git log" with the "-p" option, they
do not produce the output described above; instead they produce a
patch file.  You can customize the creation of such patches via the
GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS environment variables.</p></div>
<div class="paragraph"><p>What the -p option produces is slightly different from the traditional
diff format:</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
It is preceded with a "git diff" header that looks like this:
</p>
<div class="literalblock">
<div class="content">
<pre><tt>diff --git a/file1 b/file2</tt></pre>
</div></div>
<div class="paragraph"><p>The <tt>a/</tt> and <tt>b/</tt> filenames are the same unless rename/copy is
involved.  Especially, even for a creation or a deletion,
<tt>/dev/null</tt> is <em>not</em> used in place of the <tt>a/</tt> or <tt>b/</tt> filenames.</p></div>
<div class="paragraph"><p>When rename/copy is involved, <tt>file1</tt> and <tt>file2</tt> show the
name of the source file of the rename/copy and the name of
the file that rename/copy produces, respectively.</p></div>
</li>
<li>
<p>
It is followed by one or more extended header lines:
</p>
<div class="literalblock">
<div class="content">
<pre><tt>old mode &lt;mode&gt;
new mode &lt;mode&gt;
deleted file mode &lt;mode&gt;
new file mode &lt;mode&gt;
copy from &lt;path&gt;
copy to &lt;path&gt;
rename from &lt;path&gt;
rename to &lt;path&gt;
similarity index &lt;number&gt;
dissimilarity index &lt;number&gt;
index &lt;hash&gt;..&lt;hash&gt; &lt;mode&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>File modes are printed as 6-digit octal numbers including the file type
and file permission bits.</p></div>
<div class="paragraph"><p>Path names in extended headers do not include the <tt>a/</tt> and <tt>b/</tt> prefixes.</p></div>
<div class="paragraph"><p>The similarity index is the percentage of unchanged lines, and
the dissimilarity index is the percentage of changed lines.  It
is a rounded down integer, followed by a percent sign.  The
similarity index value of 100% is thus reserved for two equal
files, while 100% dissimilarity means that no line from the old
file made it into the new one.</p></div>
<div class="paragraph"><p>The index line includes the SHA-1 checksum before and after the change.
The &lt;mode&gt; is included if the file mode does not change; otherwise,
separate lines indicate the old and the new mode.</p></div>
</li>
<li>
<p>
TAB, LF, double quote and backslash characters in pathnames
    are represented as <tt>\t</tt>, <tt>\n</tt>, <tt>\"</tt> and <tt>\\</tt>, respectively.
    If there is need for such substitution then the whole
    pathname is put in double quotes.
</p>
</li>
<li>
<p>
All the <tt>file1</tt> files in the output refer to files before the
    commit, and all the <tt>file2</tt> files refer to files after the commit.
    It is incorrect to apply each change to each file sequentially.  For
    example, this patch will swap a and b:
</p>
<div class="literalblock">
<div class="content">
<pre><tt>diff --git a/a b/b
rename from a
rename to b
diff --git a/b b/a
rename from b
rename to a</tt></pre>
</div></div>
</li>
</ol></div>
</div>
</div>
<div class="sect1">
<h2 id="_combined_diff_format">combined diff format</h2>
<div class="sectionbody">
<div class="paragraph"><p>Any diff-generating command can take the &#8216;-c` or <tt>--cc</tt> option to
produce a <em>combined diff</em> when showing a merge. This is the default
format when showing merges with <a href="git-diff.html">git-diff(1)</a> or
<a href="git-show.html">git-show(1)</a>. Note also that you can give the `-m&#8217; option to any
of these commands to force generation of diffs with individual parents
of a merge.</p></div>
<div class="paragraph"><p>A <em>combined diff</em> format looks like this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>diff --combined describe.c
index fabadb8,cc95eb0..4866510
--- a/describe.c
+++ b/describe.c
@@@ -98,20 -98,12 +98,20 @@@
        return (a_date &gt; b_date) ? -1 : (a_date == b_date) ? 0 : 1;
  }

- static void describe(char *arg)
 -static void describe(struct commit *cmit, int last_one)
++static void describe(char *arg, int last_one)
  {
 +      unsigned char sha1[20];
 +      struct commit *cmit;
        struct commit_list *list;
        static int initialized = 0;
        struct commit_name *n;

 +      if (get_sha1(arg, sha1) &lt; 0)
 +              usage(describe_usage);
 +      cmit = lookup_commit_reference(sha1);
 +      if (!cmit)
 +              usage(describe_usage);
 +
        if (!initialized) {
                initialized = 1;
                for_each_ref(get_name);</tt></pre>
</div></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
It is preceded with a "git diff" header, that looks like
     this (when <em>-c</em> option is used):
</p>
<div class="literalblock">
<div class="content">
<pre><tt>diff --combined file</tt></pre>
</div></div>
<div class="paragraph"><p>or like this (when <em>--cc</em> option is used):</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>diff --cc file</tt></pre>
</div></div>
</li>
<li>
<p>
It is followed by one or more extended header lines
     (this example shows a merge with two parents):
</p>
<div class="literalblock">
<div class="content">
<pre><tt>index &lt;hash&gt;,&lt;hash&gt;..&lt;hash&gt;
mode &lt;mode&gt;,&lt;mode&gt;..&lt;mode&gt;
new file mode &lt;mode&gt;
deleted file mode &lt;mode&gt;,&lt;mode&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>The <tt>mode &lt;mode&gt;,&lt;mode&gt;..&lt;mode&gt;</tt> line appears only if at least one of
the &lt;mode&gt; is different from the rest. Extended headers with
information about detected contents movement (renames and
copying detection) are designed to work with diff of two
&lt;tree-ish&gt; and are not used by combined diff format.</p></div>
</li>
<li>
<p>
It is followed by two-line from-file/to-file header
</p>
<div class="literalblock">
<div class="content">
<pre><tt>--- a/file
+++ b/file</tt></pre>
</div></div>
<div class="paragraph"><p>Similar to two-line header for traditional <em>unified</em> diff
format, <tt>/dev/null</tt> is used to signal created or deleted
files.</p></div>
</li>
<li>
<p>
Chunk header format is modified to prevent people from
     accidentally feeding it to <tt>patch -p1</tt>. Combined diff format
     was created for review of merge commit changes, and was not
     meant for apply. The change is similar to the change in the
     extended <em>index</em> header:
</p>
<div class="literalblock">
<div class="content">
<pre><tt>@@@ &lt;from-file-range&gt; &lt;from-file-range&gt; &lt;to-file-range&gt; @@@</tt></pre>
</div></div>
<div class="paragraph"><p>There are (number of parents + 1) <tt>@</tt> characters in the chunk
header for combined diff format.</p></div>
</li>
</ol></div>
<div class="paragraph"><p>Unlike the traditional <em>unified</em> diff format, which shows two
files A and B with a single column that has <tt>-</tt> (minus&#8201;&#8212;&#8201;appears in A but removed in B), <tt>+</tt> (plus&#8201;&#8212;&#8201;missing in A but
added to B), or <tt>" "</tt> (space&#8201;&#8212;&#8201;unchanged) prefix, this format
compares two or more files file1, file2,&#8230; with one file X, and
shows how X differs from each of fileN.  One column for each of
fileN is prepended to the output line to note how X&#8217;s line is
different from it.</p></div>
<div class="paragraph"><p>A <tt>-</tt> character in the column N means that the line appears in
fileN but it does not appear in the result.  A <tt>+</tt> character
in the column N means that the line appears in the result,
and fileN does not have that line (in other words, the line was
added, from the point of view of that parent).</p></div>
<div class="paragraph"><p>In the above example output, the function signature was changed
from both files (hence two <tt>-</tt> removals from both file1 and
file2, plus <tt>++</tt> to mean one line that was added does not appear
in either file1 or file2).  Also eight other lines are the same
from file1 but do not appear in file2 (hence prefixed with <tt>+</tt>).</p></div>
<div class="paragraph"><p>When shown by <tt>git diff-tree -c</tt>, it compares the parents of a
merge commit with the merge result (i.e. file1..fileN are the
parents).  When shown by <tt>git diff-files -c</tt>, it compares the
two unresolved merge parents with the working tree file
(i.e. file1 is stage 2 aka "our version", file2 is stage 3 aka
"their version").</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
<tt>git log --no-merges</tt>
</dt>
<dd>
<p>
        Show the whole commit history, but skip any merges
</p>
</dd>
<dt class="hdlist1">
<tt>git log v2.6.12.. include/scsi drivers/scsi</tt>
</dt>
<dd>
<p>
        Show all commits since version <em>v2.6.12</em> that changed any file
        in the <tt>include/scsi</tt> or <tt>drivers/scsi</tt> subdirectories
</p>
</dd>
<dt class="hdlist1">
<tt>git log --since="2 weeks ago" -- gitk</tt>
</dt>
<dd>
<p>
        Show the changes during the last two weeks to the file <em>gitk</em>.
        The &#8220;--&#8221; is necessary to avoid confusion with the <strong>branch</strong> named
        <em>gitk</em>
</p>
</dd>
<dt class="hdlist1">
<tt>git log --name-status release..test</tt>
</dt>
<dd>
<p>
        Show the commits that are in the "test" branch but not yet
        in the "release" branch, along with the list of paths
        each commit modifies.
</p>
</dd>
<dt class="hdlist1">
<tt>git log --follow builtin/rev-list.c</tt>
</dt>
<dd>
<p>
        Shows the commits that changed <tt>builtin/rev-list.c</tt>, including
        those commits that occurred before the file was given its
        present name.
</p>
</dd>
<dt class="hdlist1">
<tt>git log --branches --not --remotes=origin</tt>
</dt>
<dd>
<p>
        Shows all commits that are in any of local branches but not in
        any of remote-tracking branches for <em>origin</em> (what you have that
        origin doesn&#8217;t).
</p>
</dd>
<dt class="hdlist1">
<tt>git log master --not --remotes=*/master</tt>
</dt>
<dd>
<p>
        Shows all commits that are in local master but not in any remote
        repository master branches.
</p>
</dd>
<dt class="hdlist1">
<tt>git log -p -m --first-parent</tt>
</dt>
<dd>
<p>
        Shows the history including change diffs, but only from the
        &#8220;main branch&#8221; perspective, skipping commits that come from merged
        branches, and showing full diffs of changes introduced by the merges.
        This makes sense only when following a strict policy of merging all
        topic branches when staying on a single integration branch.
</p>
</dd>
<dt class="hdlist1">
<tt>git log -L '/int main/',/^}/:main.c</tt>
</dt>
<dd>
<p>
        Shows how the function <tt>main()</tt> in the file <tt>main.c</tt> evolved
        over time.
</p>
</dd>
<dt class="hdlist1">
<tt>git log -3</tt>
</dt>
<dd>
<p>
        Limits the number of commits to show to 3.
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_discussion">DISCUSSION</h2>
<div class="sectionbody">
<div class="paragraph"><p>At the core level, Git is character encoding agnostic.</p></div>
<div class="ulist"><ul>
<li>
<p>
The pathnames recorded in the index and in the tree objects
   are treated as uninterpreted sequences of non-NUL bytes.
   What readdir(2) returns are what are recorded and compared
   with the data Git keeps track of, which in turn are expected
   to be what lstat(2) and creat(2) accepts.  There is no such
   thing as pathname encoding translation.
</p>
</li>
<li>
<p>
The contents of the blob objects are uninterpreted sequences
   of bytes.  There is no encoding translation at the core
   level.
</p>
</li>
<li>
<p>
The commit log messages are uninterpreted sequences of non-NUL
   bytes.
</p>
</li>
</ul></div>
<div class="paragraph"><p>Although we encourage that the commit log messages are encoded
in UTF-8, both the core and Git Porcelain are designed not to
force UTF-8 on projects.  If all participants of a particular
project find it more convenient to use legacy encodings, Git
does not forbid it.  However, there are a few things to keep in
mind.</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
<em>git commit</em> and <em>git commit-tree</em> issues
  a warning if the commit log message given to it does not look
  like a valid UTF-8 string, unless you explicitly say your
  project uses a legacy encoding.  The way to say this is to
  have i18n.commitencoding in <tt>.git/config</tt> file, like this:
</p>
<div class="listingblock">
<div class="content">
<pre><tt>[i18n]
        commitencoding = ISO-8859-1</tt></pre>
</div></div>
<div class="paragraph"><p>Commit objects created with the above setting record the value
of <tt>i18n.commitencoding</tt> in its <tt>encoding</tt> header.  This is to
help other people who look at them later.  Lack of this header
implies that the commit log message is encoded in UTF-8.</p></div>
</li>
<li>
<p>
<em>git log</em>, <em>git show</em>, <em>git blame</em> and friends look at the
  <tt>encoding</tt> header of a commit object, and try to re-code the
  log message into UTF-8 unless otherwise specified.  You can
  specify the desired output encoding with
  <tt>i18n.logoutputencoding</tt> in <tt>.git/config</tt> file, like this:
</p>
<div class="listingblock">
<div class="content">
<pre><tt>[i18n]
        logoutputencoding = ISO-8859-1</tt></pre>
</div></div>
<div class="paragraph"><p>If you do not have this configuration variable, the value of
<tt>i18n.commitencoding</tt> is used instead.</p></div>
</li>
</ol></div>
<div class="paragraph"><p>Note that we deliberately chose not to re-code the commit log
message when a commit is made to force UTF-8 at the commit
object level, because re-coding to UTF-8 is not necessarily a
reversible operation.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration">CONFIGURATION</h2>
<div class="sectionbody">
<div class="paragraph"><p>See <a href="git-config.html">git-config(1)</a> for core variables and <a href="git-diff.html">git-diff(1)</a>
for settings related to diff generation.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
format.pretty
</dt>
<dd>
<p>
        Default for the <tt>--format</tt> option.  (See <em>Pretty Formats</em> above.)
        Defaults to <tt>medium</tt>.
</p>
</dd>
<dt class="hdlist1">
i18n.logOutputEncoding
</dt>
<dd>
<p>
        Encoding to use when displaying logs.  (See <em>Discussion</em> above.)
        Defaults to the value of <tt>i18n.commitEncoding</tt> if set, and UTF-8
        otherwise.
</p>
</dd>
<dt class="hdlist1">
log.date
</dt>
<dd>
<p>
        Default format for human-readable dates.  (Compare the
        <tt>--date</tt> option.)  Defaults to "default", which means to write
        dates like <tt>Sat May 8 19:35:34 2010 -0500</tt>.
</p>
</dd>
<dt class="hdlist1">
log.showroot
</dt>
<dd>
<p>
        If <tt>false</tt>, <tt>git log</tt> and related commands will not treat the
        initial commit as a big creation event.  Any root commits in
        <tt>git log -p</tt> output would be shown without a diff attached.
        The default is <tt>true</tt>.
</p>
</dd>
<dt class="hdlist1">
mailmap.*
</dt>
<dd>
<p>
        See <a href="git-shortlog.html">git-shortlog(1)</a>.
</p>
</dd>
<dt class="hdlist1">
notes.displayRef
</dt>
<dd>
<p>
        Which refs, in addition to the default set by <tt>core.notesRef</tt>
        or <em>GIT_NOTES_REF</em>, to read notes from when showing commit
        messages with the <tt>log</tt> family of commands.  See
        <a href="git-notes.html">git-notes(1)</a>.
</p>
<div class="paragraph"><p>May be an unabbreviated ref name or a glob and may be specified
multiple times.  A warning will be issued for refs that do not exist,
but a glob that does not match any refs is silently ignored.</p></div>
<div class="paragraph"><p>This setting can be disabled by the <tt>--no-notes</tt> option,
overridden by the <em>GIT_NOTES_DISPLAY_REF</em> environment variable,
and overridden by the <tt>--notes=&lt;ref&gt;</tt> option.</p></div>
</dd>
</dl></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-12-03 14:06:33 PST
</div>
</div>
</body>
</html>
