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.

Some options that 'git log' command understands can be used 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 (defaults to 'HEAD').
	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[]


DIFF FORMATTING
---------------
The options below can be used to change the way `git show` generates
diff output.

:git-log: 1
:diff-merges-default: `dense-combined`
include::diff-options.txt[]

include::diff-generate-patch.txt[]


EXAMPLES
--------

`git show v1.0.0`::
	Shows the tag `v1.0.0`, along with the object the tag
	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
