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 gitlink:git-ls-tree[1]
with \--name-only).

For plain blobs, it shows the plain contents.

This manual page describes only the most frequently used options.


OPTIONS
-------
<object>::
	The name of the object to show.

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 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[]

Author
------
Written by Linus Torvalds <torvalds@osdl.org> and
Junio C Hamano <junkio@cox.net>.  Significantly enhanced by
Johannes Schindelin <Johannes.Schindelin@gmx.de>.


Documentation
-------------
Documentation by David Greaves, Petr Baudis and the git-list <git@vger.kernel.org>.

This manual page is a stub. You can help the git documentation by expanding it.

GIT
---
Part of the gitlink:git[7] suite

