git-shortlog.html   [plain text]


<!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="text/html; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.4.5" />
<title>git-shortlog(1)</title>
<style type="text/css">
/* Debug borders */
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
/*
  border: 1px solid red;
*/
}

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;
}

tt {
  color: navy;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  font-family: sans-serif;
  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;
}

div.sectionbody {
  font-family: serif;
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}

pre {
  padding: 0;
  margin: 0;
}

span#author {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  font-size: 1.1em;
}
span#email {
}
span#revnumber, span#revdate, span#revremark {
  font-family: sans-serif;
}

div#footer {
  font-family: sans-serif;
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
div#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
div#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

div#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.5em;
  margin-bottom: 2.5em;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-family: sans-serif;
  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 silver;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock {
  padding-left: 2.0em;
  margin-right: 10%;
}
div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock {
  padding-left: 2.0em;
  margin-right: 10%;
}
div.verseblock > div.content {
  white-space: pre;
}
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: 2px solid silver;
}

div.exampleblock > div.content {
  border-left: 2px solid silver;
  padding: 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;
}

div.tableblock > table {
  border: 3px solid #527bbd;
}
thead {
  font-family: sans-serif;
  font-weight: bold;
}
tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}
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;
}


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;
}

@media print {
  div#footer-badges { display: none; }
}

div#toctitle {
  color: #527bbd;
  font-family: sans-serif;
  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;
}
/* Overrides for manpage documents */
h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
h2 {
  border-style: none;
}
div.sectionbody {
  margin-left: 5%;
}

@media print {
  div#toc { display: none; }
}

/* Workarounds for IE6's broken and incomplete CSS2. */

div.sidebar-content {
  background: #ffffee;
  border: 1px solid silver;
  padding: 0.5em;
}
div.sidebar-title, div.image-title {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  margin-top: 0.0em;
  margin-bottom: 0.5em;
}

div.listingblock div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock-attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock-content {
  white-space: pre;
}
div.verseblock-attribution {
  padding-top: 0.75em;
  text-align: left;
}

div.exampleblock-content {
  border-left: 2px solid silver;
  padding-left: 0.5em;
}

/* IE6 sets dynamically generated links as visited. */
div#toc a:visited { color: blue; }
</style>
</head>
<body>
<div id="header">
<h1>
git-shortlog(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-shortlog -
   Summarize 'git log' output
</p>
</div>
</div>
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<div class="verseblock-content">git log --pretty=short | <em>git shortlog</em> [-h] [-n] [-s] [-e] [-w]
<em>git shortlog</em> [-n|--numbered] [-s|--summary] [-e|--email] [-w[&lt;width&gt;[,&lt;indent1&gt;[,&lt;indent2&gt;]]]] &lt;commit&gt;&#8230;</div>
<div class="verseblock-attribution">
</div></div>
</div>
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Summarizes <em>git log</em> output in a format suitable for inclusion
in release announcements. Each commit will be grouped by author and
the first line of the commit message will be shown.</p></div>
<div class="paragraph"><p>Additionally, "[PATCH]" will be stripped from the commit description.</p></div>
<div class="paragraph"><p>If no revisions are passed on the command line and either standard input
is not a terminal or there is no current branch, <em>git shortlog</em> will
output a summary of the log read from standard input, without
reference to the current repository.</p></div>
</div>
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-h
</dt>
<dt class="hdlist1">
--help
</dt>
<dd>
<p>
        Print a short usage message and exit.
</p>
</dd>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--numbered
</dt>
<dd>
<p>
        Sort output according to the number of commits per author instead
        of author alphabetic order.
</p>
</dd>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--summary
</dt>
<dd>
<p>
        Suppress commit description and provide a commit count summary only.
</p>
</dd>
<dt class="hdlist1">
-e
</dt>
<dt class="hdlist1">
--email
</dt>
<dd>
<p>
        Show the email address of each author.
</p>
</dd>
<dt class="hdlist1">
--format[=&lt;format&gt;]
</dt>
<dd>
<p>
        Instead of the commit subject, use some other information to
        describe each commit.  <em>&lt;format&gt;</em> can be any string accepted
        by the <tt>--format</tt> option of <em>git log</em>, such as <em>&#42; [%h] %s</em>.
        (See the "PRETTY FORMATS" section of <a href="git-log.html">git-log(1)</a>.)
</p>
<div class="literalblock">
<div class="content">
<pre><tt>Each pretty-printed commit will be rewrapped before it is shown.</tt></pre>
</div></div>
</dd>
<dt class="hdlist1">
-w[&lt;width&gt;[,&lt;indent1&gt;[,&lt;indent2&gt;]]]
</dt>
<dd>
<p>
        Linewrap the output by wrapping each line at <tt>width</tt>.  The first
        line of each entry is indented by <tt>indent1</tt> spaces, and the second
        and subsequent lines are indented by <tt>indent2</tt> spaces. <tt>width</tt>,
        <tt>indent1</tt>, and <tt>indent2</tt> default to 76, 6 and 9 respectively.
</p>
</dd>
</dl></div>
</div>
<h2 id="_mapping_authors">MAPPING AUTHORS</h2>
<div class="sectionbody">
<div class="paragraph"><p>The <tt>.mailmap</tt> feature is used to coalesce together commits by the same
person in the shortlog, where their name and/or email address was
spelled differently.</p></div>
<div class="paragraph"><p>If the file <tt>.mailmap</tt> exists at the toplevel of the repository, or at
the location pointed to by the mailmap.file configuration option, it
is used to map author and committer names and email addresses to
canonical real names and email addresses.</p></div>
<div class="paragraph"><p>In the simple form, each line in the file consists of the canonical
real name of an author, whitespace, and an email address used in the
commit (enclosed by <em>&lt;</em> and <em>&gt;</em>) to map to the name. For example:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>Proper Name &lt;commit@email.xx&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>The more complex forms are:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>&lt;proper@email.xx&gt; &lt;commit@email.xx&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>which allows mailmap to replace only the email part of a commit, and:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>Proper Name &lt;proper@email.xx&gt; &lt;commit@email.xx&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>which allows mailmap to replace both the name and the email of a
commit matching the specified commit email address, and:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>Proper Name &lt;proper@email.xx&gt; Commit Name &lt;commit@email.xx&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>which allows mailmap to replace both the name and the email of a
commit matching both the specified commit name and email address.</p></div>
<div class="paragraph"><p>Example 1: Your history contains commits by two authors, Jane
and Joe, whose names appear in the repository under several forms:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>Joe Developer &lt;joe@example.com&gt;
Joe R. Developer &lt;joe@example.com&gt;
Jane Doe &lt;jane@example.com&gt;
Jane Doe &lt;jane@laptop.(none)&gt;
Jane D. &lt;jane@desktop.(none)&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>Now suppose that Joe wants his middle name initial used, and Jane
prefers her family name fully spelled out. A proper <tt>.mailmap</tt> file
would look like:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>Jane Doe         &lt;jane@desktop.(none)&gt;
Joe R. Developer &lt;joe@example.com&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>Note how there is no need for an entry for &lt;<a href="mailto:jane@laptop">jane@laptop</a>.(none)&gt;, because the
real name of that author is already correct.</p></div>
<div class="paragraph"><p>Example 2: Your repository contains commits from the following
authors:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>nick1 &lt;bugs@company.xx&gt;
nick2 &lt;bugs@company.xx&gt;
nick2 &lt;nick2@company.xx&gt;
santa &lt;me@company.xx&gt;
claus &lt;me@company.xx&gt;
CTO &lt;cto@coompany.xx&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>Then you might want a <tt>.mailmap</tt> file that looks like:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>&lt;cto@company.xx&gt;                       &lt;cto@coompany.xx&gt;
Some Dude &lt;some@dude.xx&gt;         nick1 &lt;bugs@company.xx&gt;
Other Author &lt;other@author.xx&gt;   nick2 &lt;bugs@company.xx&gt;
Other Author &lt;other@author.xx&gt;         &lt;nick2@company.xx&gt;
Santa Claus &lt;santa.claus@northpole.xx&gt; &lt;me@company.xx&gt;</tt></pre>
</div></div>
<div class="paragraph"><p>Use hash <em>#</em> for comments that are either on their own line, or after
the email address.</p></div>
</div>
<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 id="footer">
<div id="footer-text">
Last updated 2011-04-19 22:26:58 UTC
</div>
</div>
</body>
</html>