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
