|  | <!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.8" /> | 
|  | <title>git-shortlog(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; } | 
|  |  | 
|  | .monospaced, code, pre { | 
|  | font-family: "Courier New", Courier, monospace; | 
|  | font-size: inherit; | 
|  | color: navy; | 
|  | 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.toclevel0, 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; } | 
|  |  | 
|  | div.unbreakable { page-break-inside: avoid; } | 
|  |  | 
|  |  | 
|  | /* | 
|  | * xhtml11 specific | 
|  | * | 
|  | * */ | 
|  |  | 
|  | 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 | 
|  | * | 
|  | * */ | 
|  |  | 
|  | 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"> | 
|  | /*<+'])'); | 
|  | // 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.toLowerCase() == '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.toLowerCase() == '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-shortlog(1) Manual Page | 
|  | </h1> | 
|  | <h2>NAME</h2> | 
|  | <div class="sectionbody"> | 
|  | <p>git-shortlog - | 
|  | Summarize 'git log' output | 
|  | </p> | 
|  | </div> | 
|  | </div> | 
|  | <div id="content"> | 
|  | <div class="sect1"> | 
|  | <h2 id="_synopsis">SYNOPSIS</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="verseblock"> | 
|  | <pre class="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[<width>[,<indent1>[,<indent2>]]]] <commit>…</pre> | 
|  | <div class="attribution"> | 
|  | </div></div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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 title.</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> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <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[=<format>] | 
|  | </dt> | 
|  | <dd> | 
|  | <p> | 
|  | Instead of the commit subject, use some other information to | 
|  | describe each commit. <em><format></em> can be any string accepted | 
|  | by the <code>--format</code> option of <em>git log</em>, such as <em>* [%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><code>Each pretty-printed commit will be rewrapped before it is shown.</code></pre> | 
|  | </div></div> | 
|  | </dd> | 
|  | <dt class="hdlist1"> | 
|  | -w[<width>[,<indent1>[,<indent2>]]] | 
|  | </dt> | 
|  | <dd> | 
|  | <p> | 
|  | Linewrap the output by wrapping each line at <code>width</code>. The first | 
|  | line of each entry is indented by <code>indent1</code> spaces, and the second | 
|  | and subsequent lines are indented by <code>indent2</code> spaces. <code>width</code>, | 
|  | <code>indent1</code>, and <code>indent2</code> default to 76, 6 and 9 respectively. | 
|  | </p> | 
|  | </dd> | 
|  | </dl></div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_mapping_authors">MAPPING AUTHORS</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"><p>The <code>.mailmap</code> 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 <code>.mailmap</code> exists at the toplevel of the repository, or at | 
|  | the location pointed to by the mailmap.file or mailmap.blob | 
|  | configuration options, 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><</em> and <em>></em>) to map to the name. For example:</p></div> | 
|  | <div class="openblock"> | 
|  | <div class="content"> | 
|  | <div class="literalblock"> | 
|  | <div class="content"> | 
|  | <pre><code>Proper Name <commit@email.xx></code></pre> | 
|  | </div></div> | 
|  | </div></div> | 
|  | <div class="paragraph"><p>The more complex forms are:</p></div> | 
|  | <div class="openblock"> | 
|  | <div class="content"> | 
|  | <div class="literalblock"> | 
|  | <div class="content"> | 
|  | <pre><code><proper@email.xx> <commit@email.xx></code></pre> | 
|  | </div></div> | 
|  | </div></div> | 
|  | <div class="paragraph"><p>which allows mailmap to replace only the email part of a commit, and:</p></div> | 
|  | <div class="openblock"> | 
|  | <div class="content"> | 
|  | <div class="literalblock"> | 
|  | <div class="content"> | 
|  | <pre><code>Proper Name <proper@email.xx> <commit@email.xx></code></pre> | 
|  | </div></div> | 
|  | </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="openblock"> | 
|  | <div class="content"> | 
|  | <div class="literalblock"> | 
|  | <div class="content"> | 
|  | <pre><code>Proper Name <proper@email.xx> Commit Name <commit@email.xx></code></pre> | 
|  | </div></div> | 
|  | </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><code>Joe Developer <joe@example.com> | 
|  | Joe R. Developer <joe@example.com> | 
|  | Jane Doe <jane@example.com> | 
|  | Jane Doe <jane@laptop.(none)> | 
|  | Jane D. <jane@desktop.(none)></code></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 <code>.mailmap</code> file | 
|  | would look like:</p></div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre><code>Jane Doe <jane@desktop.(none)> | 
|  | Joe R. Developer <joe@example.com></code></pre> | 
|  | </div></div> | 
|  | <div class="paragraph"><p>Note how there is no need for an entry for <code><jane@laptop.(none)></code>, 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><code>nick1 <bugs@company.xx> | 
|  | nick2 <bugs@company.xx> | 
|  | nick2 <nick2@company.xx> | 
|  | santa <me@company.xx> | 
|  | claus <me@company.xx> | 
|  | CTO <cto@coompany.xx></code></pre> | 
|  | </div></div> | 
|  | <div class="paragraph"><p>Then you might want a <code>.mailmap</code> file that looks like:</p></div> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre><code><cto@company.xx> <cto@coompany.xx> | 
|  | Some Dude <some@dude.xx> nick1 <bugs@company.xx> | 
|  | Other Author <other@author.xx> nick2 <bugs@company.xx> | 
|  | Other Author <other@author.xx> <nick2@company.xx> | 
|  | Santa Claus <santa.claus@northpole.xx> <me@company.xx></code></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> | 
|  | </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 2012-09-17 16:55:59 PDT | 
|  | </div> | 
|  | </div> | 
|  | </body> | 
|  | </html> |