blob: a855dbf2833f9f313c366916276561a5a7f80b28 [file] [log] [blame]
<!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.2.5" />
<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;
}
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, 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;
}
pre {
padding: 0;
margin: 0;
}
span#author {
color: #527bbd;
font-family: sans-serif;
font-weight: bold;
font-size: 1.1em;
}
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 {
margin-right: 0%;
}
div.listingblock > div.content {
border: 1px solid silver;
background: #f4f4f4;
padding: 0.5em;
}
div.quoteblock > div.content {
padding-left: 2.0em;
}
div.attribution {
text-align: right;
}
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.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;
}
div.olist2 ol {
list-style-type: lower-alpha;
}
div.tableblock > table {
border: 3px solid #527bbd;
}
thead {
font-family: sans-serif;
font-weight: bold;
}
tfoot {
font-weight: bold;
}
div.hlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
div.hlist td {
padding-bottom: 5px;
}
td.hlist1 {
vertical-align: top;
font-style: italic;
padding-right: 0.8em;
}
td.hlist2 {
vertical-align: top;
}
@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;
}
include1::./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;
}
/* IE6 sets dynamically generated links as visited. */
div#toc a:visited { color: blue; }
</style>
<title>git-show(1)</title>
</head>
<body>
<div id="header">
<h1>
git-show(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-show -
Show various types of objects
</p>
</div>
</div>
<h2>SYNOPSIS</h2>
<div class="sectionbody">
<div class="para"><p><em>git show</em> [options] &lt;object&gt;&#8230;</p></div>
</div>
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="para"><p>Shows one or more objects (blobs, trees, tags and commits).</p></div>
<div class="para"><p>For commits it shows the log message and textual diff. It also
presents the merge commit in a special format as produced by
<em>git-diff-tree --cc</em>.</p></div>
<div class="para"><p>For tags, it shows the tag message and the referenced objects.</p></div>
<div class="para"><p>For trees, it shows the names (equivalent to <em>git-ls-tree</em>
with --name-only).</p></div>
<div class="para"><p>For plain blobs, it shows the plain contents.</p></div>
<div class="para"><p>The command takes options applicable to the <em>git-diff-tree</em> command to
control how the changes the commit introduces are shown.</p></div>
<div class="para"><p>This manual page describes only the most frequently used options.</p></div>
</div>
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="vlist"><dl>
<dt>
&lt;object&gt;&#8230;
</dt>
<dd>
<p>
The names of objects to show.
For a more complete list of ways to spell object names, see
"SPECIFYING REVISIONS" section in <a href="git-rev-parse.html">git-rev-parse(1)</a>.
</p>
</dd>
<dt>
--pretty[=<em>&lt;format&gt;</em>]
</dt>
<dt>
--format[=<em>&lt;format&gt;</em>]
</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>.
When omitted, the format defaults to <em>medium</em>.
</p>
<div class="para"><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>
--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="para"><p>This should make "--pretty=oneline" a whole lot more readable for
people using 80-column terminals.</p></div>
</dd>
<dt>
--oneline
</dt>
<dd>
<p>
This is a shorthand for "--pretty=oneline --abbrev-commit"
used together.
</p>
</dd>
<dt>
--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>
</dl></div>
</div>
<h2 id="_pretty_formats">PRETTY FORMATS</h2>
<div class="sectionbody">
<div class="para"><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="para"><p>Here are some additional details for each format:</p></div>
<div class="ilist"><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="para"><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="para"><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></div>
</li>
<li>
<p>
<em>format:</em>
</p>
<div class="para"><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></div>
<div class="para"><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="para"><p>The placeholders are:</p></div>
<div class="ilist"><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>%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
</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>%x00</em>: print a byte from a hex code
</p>
</li>
</ul></div>
</li>
<li>
<p>
<em>tformat:</em>
</p>
<div class="para"><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="para"><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>
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="vlist"><dl>
<dt>
git show v1.0.0
</dt>
<dd>
<p>
Shows the tag <tt>v1.0.0</tt>, along with the object the tags
points at.
</p>
</dd>
<dt>
git show v1.0.0^{tree}
</dt>
<dd>
<p>
Shows the tree pointed to by the tag <tt>v1.0.0</tt>.
</p>
</dd>
<dt>
git show next~10:Documentation/README
</dt>
<dd>
<p>
Shows the contents of the file <tt>Documentation/README</tt> as
they were current in the 10th last commit of the branch
<tt>next</tt>.
</p>
</dd>
<dt>
git show master:Makefile master:t/Makefile
</dt>
<dd>
<p>
Concatenates the contents of said Makefiles in the head
of the branch <tt>master</tt>.
</p>
</dd>
</dl></div>
</div>
<h2 id="_discussion">Discussion</h2>
<div class="sectionbody">
<div class="para"><p>At the core level, git is character encoding agnostic.</p></div>
<div class="ilist"><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="para"><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"><ol>
<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="para"><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="para"><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="para"><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>
<h2 id="_author">Author</h2>
<div class="sectionbody">
<div class="para"><p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt; and
Junio C Hamano &lt;gitster@pobox.com&gt;. Significantly enhanced by
Johannes Schindelin &lt;Johannes.Schindelin@gmx.de&gt;.</p></div>
</div>
<h2 id="_documentation">Documentation</h2>
<div class="sectionbody">
<div class="para"><p>Documentation by David Greaves, Petr Baudis and the git-list &lt;git@vger.kernel.org&gt;.</p></div>
</div>
<h2 id="_git">GIT</h2>
<div class="sectionbody">
<div class="para"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2009-07-01 02:31:03 UTC
</div>
</div>
</body>
</html>