git-show(1)
===========

NAME
----
git-show - Show various types of objects


SYNOPSIS
--------
[verse]
'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 linkgit:gitrevisions[7].

include::pretty-options.txt[]


include::pretty-formats.txt[]


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 `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
----------

include::i18n.txt[]

GIT
---
Part of the linkgit:git[1] suite
