<!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 7.0.2" /> | |
<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; } | |
a:visited { color: fuchsia; } | |
em { | |
font-style: italic; | |
} | |
strong { | |
font-weight: bold; | |
} | |
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 { | |
border-bottom: 2px solid silver; | |
} | |
h2 { | |
border-bottom: 2px solid silver; | |
padding-top: 0.5em; | |
} | |
div.sectionbody { | |
font-family: serif; | |
margin-left: 0; | |
} | |
hr { | |
border: 1px solid silver; | |
} | |
p { | |
margin-top: 0.5em; | |
margin-bottom: 0.5em; | |
} | |
pre { | |
padding: 0; | |
margin: 0; | |
} | |
span#author { | |
color: #527bbd; | |
font-family: sans-serif; | |
font-weight: bold; | |
font-size: 1.2em; | |
} | |
span#email { | |
} | |
span#revision { | |
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, | |
div.tableblock, div.imageblock, div.exampleblock, div.verseblock, | |
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, | |
div.admonitionblock { | |
margin-right: 10%; | |
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 { | |
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 > div.content { | |
padding-left: 2.0em; | |
} | |
div.quoteblock .attribution { | |
text-align: right; | |
} | |
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.verseblock div.content { | |
white-space: pre; | |
} | |
div.imageblock div.content { padding-left: 0; } | |
div.imageblock img { border: 1px solid silver; } | |
span.image img { border-style: none; } | |
dl { | |
margin-top: 0.8em; | |
margin-bottom: 0.8em; | |
} | |
dt { | |
margin-top: 0.5em; | |
margin-bottom: 0; | |
font-style: italic; | |
} | |
dd > *:first-child { | |
margin-top: 0; | |
} | |
ul, ol { | |
list-style-position: outside; | |
} | |
ol.olist2 { | |
list-style-type: lower-alpha; | |
} | |
div.tableblock > table { | |
border-color: #527bbd; | |
border-width: 3px; | |
} | |
thead { | |
font-family: sans-serif; | |
font-weight: bold; | |
} | |
tfoot { | |
font-weight: bold; | |
} | |
div.hlist { | |
margin-top: 0.8em; | |
margin-bottom: 0.8em; | |
} | |
td.hlist1 { | |
vertical-align: top; | |
font-style: italic; | |
padding-right: 0.8em; | |
} | |
td.hlist2 { | |
vertical-align: top; | |
} | |
@media print { | |
div#footer-badges { display: none; } | |
} | |
include::./stylesheets/xhtml11-manpage.css[] | |
/* 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 { | |
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-content { | |
padding-left: 2.0em; | |
} | |
div.exampleblock-content { | |
border-left: 2px solid silver; | |
padding-left: 0.5em; | |
} | |
</style> | |
<title>git-log(1)</title> | |
</head> | |
<body> | |
<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> | |
<h2>SYNOPSIS</h2> | |
<div class="sectionbody"> | |
<p><em>git-log</em> <option>…</p> | |
</div> | |
<h2>DESCRIPTION</h2> | |
<div class="sectionbody"> | |
<p>Shows the commit logs.</p> | |
<p>The command takes options applicable to the <a href="git-rev-list.html">git-rev-list(1)</a> | |
command to control what is shown and how, and options applicable to | |
the <a href="git-diff-tree.html">git-diff-tree(1)</a> commands to control how the changes | |
each commit introduces are shown.</p> | |
<p>This manual page describes only the most frequently used options.</p> | |
</div> | |
<h2>OPTIONS</h2> | |
<div class="sectionbody"> | |
<dl> | |
<dt> | |
--pretty[=<em><format></em>] | |
</dt> | |
<dd> | |
<p> | |
Pretty-print the contents of the commit logs in a given format, | |
where <em><format></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:<string></em>. | |
When omitted, the format defaults to <em>medium</em>. | |
</p> | |
</dd> | |
<dt> | |
--abbrev-commit | |
</dt> | |
<dd> | |
<p> | |
Instead of showing the full 40-byte hexadecimal commit object | |
name, show only handful hexdigits prefix. Non default number of | |
digits can be specified with "--abbrev=<n>" (which also modifies | |
diff output, if it is displayed). | |
</p> | |
<p>This should make "--pretty=oneline" a whole lot more readable for | |
people using 80-column terminals.</p> | |
</dd> | |
<dt> | |
--encoding[=<encoding>] | |
</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> | |
-<n> | |
</dt> | |
<dd> | |
<p> | |
Limits the number of commits to show. | |
</p> | |
</dd> | |
<dt> | |
<since>..<until> | |
</dt> | |
<dd> | |
<p> | |
Show only commits between the named two commits. When | |
either <since> or <until> is omitted, it defaults to | |
<tt>HEAD</tt>, i.e. the tip of the current branch. | |
For a more complete list of ways to spell <since> | |
and <until>, see "SPECIFYING REVISIONS" section in | |
<a href="git-rev-parse.html">git-rev-parse(1)</a>. | |
</p> | |
</dd> | |
<dt> | |
--first-parent | |
</dt> | |
<dd> | |
<p> | |
Follow only the first parent commit upon seeing a merge | |
commit. This option gives a better overview of the | |
evolution of a particular branch. | |
</p> | |
</dd> | |
<dt> | |
-p | |
</dt> | |
<dd> | |
<p> | |
Show the change the commit introduces in a patch form. | |
</p> | |
</dd> | |
<dt> | |
-g, --walk-reflogs | |
</dt> | |
<dd> | |
<p> | |
Show commits as they were recorded in the reflog. The log contains | |
a record about how the tip of a reference was changed. | |
Cannot be combined with --reverse. | |
See also <a href="git-reflog.html">git-reflog(1)</a>. | |
</p> | |
</dd> | |
<dt> | |
--decorate | |
</dt> | |
<dd> | |
<p> | |
Print out the ref names of any commits that are shown. | |
</p> | |
</dd> | |
<dt> | |
--full-diff | |
</dt> | |
<dd> | |
<p> | |
Without this flag, "git log -p <paths>…" 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 "<paths>…" limits only | |
commits, and doesn't limit diff for those commits. | |
</p> | |
</dd> | |
<dt> | |
--follow | |
</dt> | |
<dd> | |
<p> | |
Continue listing the history of a file beyond renames. | |
</p> | |
</dd> | |
<dt> | |
--log-size | |
</dt> | |
<dd> | |
<p> | |
Before the log message print out its size in bytes. Intended | |
mainly for porcelain tools consumption. If git is unable to | |
produce a valid value size is set to zero. | |
Note that only message is considered, if also a diff is shown | |
its size is not included. | |
</p> | |
</dd> | |
<dt> | |
<paths>… | |
</dt> | |
<dd> | |
<p> | |
Show only commits that affect the specified paths. | |
</p> | |
</dd> | |
</dl> | |
</div> | |
<h2>PRETTY FORMATS</h2> | |
<div class="sectionbody"> | |
<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> | |
<p>Here are some additional details for each format:</p> | |
<ul> | |
<li> | |
<p> | |
<em>oneline</em> | |
</p> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><sha1> <title line></tt></pre> | |
</div></div> | |
<p>This is designed to be as compact as possible.</p> | |
</li> | |
<li> | |
<p> | |
<em>short</em> | |
</p> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt>commit <sha1> | |
Author: <author></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><title line></tt></pre> | |
</div></div> | |
</li> | |
<li> | |
<p> | |
<em>medium</em> | |
</p> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt>commit <sha1> | |
Author: <author> | |
Date: <date></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><title line></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><full commit message></tt></pre> | |
</div></div> | |
</li> | |
<li> | |
<p> | |
<em>full</em> | |
</p> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt>commit <sha1> | |
Author: <author> | |
Commit: <committer></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><title line></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><full commit message></tt></pre> | |
</div></div> | |
</li> | |
<li> | |
<p> | |
<em>fuller</em> | |
</p> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt>commit <sha1> | |
Author: <author> | |
AuthorDate: <date & time> | |
Commit: <committer> | |
CommitDate: <date & time></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><title line></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><full commit message></tt></pre> | |
</div></div> | |
</li> | |
<li> | |
<p> | |
<em>email</em> | |
</p> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt>From <sha1> <date> | |
From: <author> | |
Date: <date & time> | |
Subject: [PATCH] <title line></tt></pre> | |
</div></div> | |
<div class="literalblock"> | |
<div class="content"> | |
<pre><tt><full commit message></tt></pre> | |
</div></div> | |
</li> | |
<li> | |
<p> | |
<em>raw</em> | |
</p> | |
<p>The <em>raw</em> format shows the entire commit exactly as | |
stored in the commit object. Notably, the SHA1s 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 nor history | |
simplification into account.</p> | |
</li> | |
<li> | |
<p> | |
<em>format:</em> | |
</p> | |
<p>The <em>format:</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> | |
<p>E.g, <em>format:"The author of %h was %an, %ar%nThe title was >>%s<<%n"</em> | |
would show something like this:</p> | |
<div class="listingblock"> | |
<div class="content"> | |
<pre><tt>The author of fe6e0ee was Junio C Hamano, 23 hours ago | |
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<< | |
</tt></pre> | |
</div></div> | |
<p>The placeholders are:</p> | |
<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>%ae</em>: author email | |
</p> | |
</li> | |
<li> | |
<p> | |
<em>%ad</em>: author date | |
</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>%ce</em>: committer email | |
</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>%e</em>: encoding | |
</p> | |
</li> | |
<li> | |
<p> | |
<em>%s</em>: subject | |
</p> | |
</li> | |
<li> | |
<p> | |
<em>%b</em>: body | |
</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>%m</em>: left, right or boundary mark | |
</p> | |
</li> | |
<li> | |
<p> | |
<em>%n</em>: newline | |
</p> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
</div> | |
<h2>Examples</h2> | |
<div class="sectionbody"> | |
<dl> | |
<dt> | |
git log --no-merges | |
</dt> | |
<dd> | |
<p> | |
Show the whole commit history, but skip any merges | |
</p> | |
</dd> | |
<dt> | |
git log v2.6.12.. include/scsi drivers/scsi | |
</dt> | |
<dd> | |
<p> | |
Show all commits since version <em>v2.6.12</em> that changed any file | |
in the include/scsi or drivers/scsi subdirectories | |
</p> | |
</dd> | |
<dt> | |
git log --since="2 weeks ago" -- gitk | |
</dt> | |
<dd> | |
<p> | |
Show the changes during the last two weeks to the file <em>gitk</em>. | |
The "--" is necessary to avoid confusion with the <strong>branch</strong> named | |
<em>gitk</em> | |
</p> | |
</dd> | |
<dt> | |
git log --name-status release..test | |
</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> | |
git log --follow builtin-rev-list.c | |
</dt> | |
<dd> | |
<p> | |
Shows the commits that changed builtin-rev-list.c, including | |
those commits that occurred before the file was given its | |
present name. | |
</p> | |
</dd> | |
</dl> | |
</div> | |
<h2>Discussion</h2> | |
<div class="sectionbody"> | |
<p>At the core level, git is character encoding agnostic.</p> | |
<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 sequence | |
of bytes. There is no encoding translation at the core | |
level. | |
</p> | |
</li> | |
<li> | |
<p> | |
The commit log messages are uninterpreted sequence of non-NUL | |
bytes. | |
</p> | |
</li> | |
</ul> | |
<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> | |
<ol> | |
<li> | |
<p> | |
<tt>git-commit-tree</tt> (hence, <tt>git-commit</tt> which uses it) issues | |
an 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> | |
<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> | |
</li> | |
<li> | |
<p> | |
<tt>git-log</tt>, <tt>git-show</tt> and friends looks at the <tt>encoding</tt> | |
header of a commit object, and tries 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> | |
<p>If you do not have this configuration variable, the value of | |
<tt>i18n.commitencoding</tt> is used instead.</p> | |
</li> | |
</ol> | |
<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> | |
<h2>Author</h2> | |
<div class="sectionbody"> | |
<p>Written by Linus Torvalds <torvalds@osdl.org></p> | |
</div> | |
<h2>Documentation</h2> | |
<div class="sectionbody"> | |
<p>Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.</p> | |
</div> | |
<h2>GIT</h2> | |
<div class="sectionbody"> | |
<p>Part of the <a href="git.html">git(7)</a> suite</p> | |
</div> | |
<div id="footer"> | |
<div id="footer-text"> | |
Last updated 29-Aug-2007 07:30:56 UTC | |
</div> | |
</div> | |
</body> | |
</html> |