git-show
(1)
Name
git-show - Show various types of objects
Synopsis
git show [options] <object>...
Description
Git Manual GIT-SHOW(1)
NAME
git-show - Show various types of objects
SYNOPSIS
git show [options] <object>...
DESCRIPTION
Shows one or more objects (blobs, trees, tags and commits).
For commits it shows the log message and textual diff. It
also presents the merge commit in a special format as
produced by git diff-tree --cc.
For tags, it shows the tag message and the referenced
objects.
For trees, it shows the names (equivalent to git ls-tree
with --name-only).
For plain blobs, it shows the plain contents.
The command takes options applicable to the git diff-tree
command to control how the changes the commit introduces are
shown.
This manual page describes only the most frequently used
options.
OPTIONS
<object>...
The names of objects to show. For a more complete list
of ways to spell object names, see "SPECIFYING
REVISIONS" section in gitrevisions(5).
--pretty[=<format>], --format=<format>
Pretty-print the contents of the commit logs in a given
format, where <format> can be one of oneline, short,
medium, full, fuller, email, raw and format:<string>.
See the "PRETTY FORMATS" section for some additional
details for each format. When omitted, the format
defaults to medium.
Note: you can specify the default pretty format in the
repository configuration (see git-config(1)).
--abbrev-commit
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=<n>"
(which also modifies diff output, if it is displayed).
Git 1.7.9.2 Last change: 02/22/2012 1
Git Manual GIT-SHOW(1)
This should make "--pretty=oneline" a whole lot more
readable for people using 80-column terminals.
--no-abbrev-commit
Show the full 40-byte hexadecimal commit object name.
This negates --abbrev-commit and those options which
imply it such as "--oneline". It also overrides the
log.abbrevCommit variable.
--oneline
This is a shorthand for "--pretty=oneline
--abbrev-commit" used together.
--encoding[=<encoding>]
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.
--notes[=<ref>]
Show the notes (see git-notes(1)) that annotate the
commit, when showing the commit log message. This is the
default for git log, git show and git whatchanged
commands when there is no --pretty, --format nor
--oneline option given on the command line.
By default, the notes shown are from the notes refs
listed in the core.notesRef and notes.displayRef
variables (or corresponding environment overrides). See
git-config(1) for more details.
With an optional <ref> argument, show this notes ref
instead of the default notes ref(s). The ref is taken to
be in refs/notes/ if it is not qualified.
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).
--no-notes
Do not show notes. This negates the above --notes
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".
--show-notes[=<ref>], --[no-]standard-notes
These options are deprecated. Use the above
Git 1.7.9.2 Last change: 02/22/2012 2
Git Manual GIT-SHOW(1)
--notes/--no-notes options instead.
PRETTY FORMATS
If the commit is a merge, and if the pretty-format is not
oneline, email or raw, an additional line is inserted before
the Author: 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 direct 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.
There are several built-in formats, and you can define
additional formats by setting a pretty.<name> config option
to either another format name, or a format: string, as
described below (see git-config(1)). Here are the details of
the built-in formats:
o oneline
<sha1> <title line>
This is designed to be as compact as possible.
o short
commit <sha1>
Author: <author>
<title line>
o medium
commit <sha1>
Author: <author>
Date: <author date>
<title line>
<full commit message>
o full
commit <sha1>
Author: <author>
Commit: <committer>
<title line>
<full commit message>
o fuller
Git 1.7.9.2 Last change: 02/22/2012 3
Git Manual GIT-SHOW(1)
commit <sha1>
Author: <author>
AuthorDate: <author date>
Commit: <committer>
CommitDate: <committer date>
<title line>
<full commit message>
o email
From <sha1> <date>
From: <author>
Date: <author date>
Subject: [PATCH] <title line>
<full commit message>
o raw
The raw 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 parents information show the true parent
commits, without taking grafts nor history
simplification into account.
o format:<string>
The format:<string> 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 %n instead of \n.
E.g, format:"The author of %h was %an, %ar%nThe title
was >>%s<<%n" would show something like this:
The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<
The placeholders are:
o %H: commit hash
o %h: abbreviated commit hash
o %T: tree hash
o %t: abbreviated tree hash
o %P: parent hashes
Git 1.7.9.2 Last change: 02/22/2012 4
Git Manual GIT-SHOW(1)
o %p: abbreviated parent hashes
o %an: author name
o %aN: author name (respecting .mailmap, see git-
shortlog(1) or git-blame(1))
o %ae: author email
o %aE: author email (respecting .mailmap, see git-
shortlog(1) or git-blame(1))
o %ad: author date (format respects --date= option)
o %aD: author date, RFC2822 style
o %ar: author date, relative
o %at: author date, UNIX timestamp
o %ai: author date, ISO 8601 format
o %cn: committer name
o %cN: committer name (respecting .mailmap, see git-
shortlog(1) or git-blame(1))
o %ce: committer email
o %cE: committer email (respecting .mailmap, see git-
shortlog(1) or git-blame(1))
o %cd: committer date
o %cD: committer date, RFC2822 style
o %cr: committer date, relative
o %ct: committer date, UNIX timestamp
o %ci: committer date, ISO 8601 format
o %d: ref names, like the --decorate option of git-
log(1)
o %e: encoding
o %s: subject
o %f: sanitized subject line, suitable for a filename
o %b: body
Git 1.7.9.2 Last change: 02/22/2012 5
Git Manual GIT-SHOW(1)
o %B: raw body (unwrapped subject and body)
o %N: commit notes
o %gD: reflog selector, e.g., refs/stash@{1}
o %gd: shortened reflog selector, e.g., stash@{1}
o %gn: reflog identity name
o %gN: reflog identity name (respecting .mailmap, see
git-shortlog(1) or git-blame(1))
o %ge: reflog identity email
o %gE: reflog identity email (respecting .mailmap,
see git-shortlog(1) or git-blame(1))
o %gs: reflog subject
o %Cred: switch color to red
o %Cgreen: switch color to green
o %Cblue: switch color to blue
o %Creset: reset color
o %C(...): color specification, as described in
color.branch.* config option
o %m: left, right or boundary mark
o %n: newline
o %%: a raw %
o %x00: print a byte from a hex code
o %w([<w>[,<i1>[,<i2>]]]): switch line wrapping, like
the -w option of git-shortlog(1).
Note
Some placeholders may depend on other options given to
the revision traversal engine. For example, the %g*
reflog options will insert an empty string unless we are
traversing reflog entries (e.g., by git log -g). The %d
placeholder will use the "short" decoration format if
--decorate was not already provided on the command line.
If you add a + (plus sign) after % of a placeholder, a
Git 1.7.9.2 Last change: 02/22/2012 6
Git Manual GIT-SHOW(1)
line-feed is inserted immediately before the expansion if
and only if the placeholder expands to a non-empty string.
If you add a - (minus sign) after % of a placeholder,
line-feeds that immediately precede the expansion are
deleted if and only if the placeholder expands to an empty
string.
If you add a ` ` (space) after % of a placeholder, a space
is inserted immediately before the expansion if and only if
the placeholder expands to a non-empty string.
o tformat:
The tformat: format works exactly like format:, 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:
$ 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
In addition, any unrecognized string that has a % in it
is interpreted as if it has tformat: in front of it. For
example, these two are equivalent:
$ git log -2 --pretty=tformat:%h 4da45bef
$ git log -2 --pretty=%h 4da45bef
EXAMPLES
git show v1.0.0
Shows the tag v1.0.0, along with the object the tags
points at.
git show v1.0.0^{tree}
Shows the tree pointed to by the tag v1.0.0.
git show -s --format=%s v1.0.0^{commit}
Shows the subject of the commit pointed to by the tag
Git 1.7.9.2 Last change: 02/22/2012 7
Git Manual GIT-SHOW(1)
v1.0.0.
git show next~10:Documentation/README
Shows the contents of the file Documentation/README as
they were current in the 10th last commit of the branch
next.
git show master:Makefile master:t/Makefile
Concatenates the contents of said Makefiles in the head
of the branch master.
DISCUSSION
At the core level, git is character encoding agnostic.
o 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.
o The contents of the blob objects are uninterpreted
sequences of bytes. There is no encoding translation at
the core level.
o The commit log messages are uninterpreted sequences of
non-NUL bytes.
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.
1. git commit and git commit-tree 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 .git/config file, like
this:
[i18n]
commitencoding = ISO-8859-1
Commit objects created with the above setting record the
value of i18n.commitencoding in its encoding 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.
Git 1.7.9.2 Last change: 02/22/2012 8
Git Manual GIT-SHOW(1)
2. git log, git show, git blame and friends look at the
encoding 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
i18n.logoutputencoding in .git/config file, like this:
[i18n]
logoutputencoding = ISO-8859-1
If you do not have this configuration variable, the
value of i18n.commitencoding is used instead.
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.
GIT
Part of the git(1) suite
ATTRIBUTES
See attributes(5) for descriptions of the following
attributes:
+---------------+--------------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+--------------------------+
|Availability | developer/versioning/git |
+---------------+--------------------------+
|Stability | Uncommitted |
+---------------+--------------------------+
NOTES
This software was built from source available at
https://java.net/projects/solaris-userland. The original
community source was downloaded from http://git-
core.googlecode.com/files/git-1.7.9.2.tar.gz
Further information about this software can be found on the
open source community website at http://git-scm.com/.
Git 1.7.9.2 Last change: 02/22/2012 9