git-cat-file(1)
===============

NAME
----
git-cat-file - Provide content or type and size information for repository objects


SYNOPSIS
--------
[verse]
'git cat-file' (-t | -s | -e | -p | <type> | --textconv ) <object>
'git cat-file' (--batch | --batch-check) < <list-of-objects>

DESCRIPTION
-----------
In its first form, the command provides the content or the type of an object in
the repository. The type is required unless '-t' or '-p' is used to find the
object type, or '-s' is used to find the object size, or '--textconv' is used
(which implies type "blob").

In the second form, a list of objects (separated by linefeeds) is provided on
stdin, and the SHA1, type, and size of each object is printed on stdout.

OPTIONS
-------
<object>::
	The name of the object to show.
	For a more complete list of ways to spell object names, see
	the "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].

-t::
	Instead of the content, show the object type identified by
	<object>.

-s::
	Instead of the content, show the object size identified by
	<object>.

-e::
	Suppress all output; instead exit with zero status if <object>
	exists and is a valid object.

-p::
	Pretty-print the contents of <object> based on its type.

<type>::
	Typically this matches the real type of <object> but asking
	for a type that can trivially be dereferenced from the given
	<object> is also permitted.  An example is to ask for a
	"tree" with <object> being a commit object that contains it,
	or to ask for a "blob" with <object> being a tag object that
	points at it.

--textconv::
	Show the content as transformed by a textconv filter. In this case,
	<object> has be of the form <treeish>:<path>, or :<path> in order
	to apply the filter to the content recorded in the index at <path>.

--batch::
	Print the SHA1, type, size, and contents of each object provided on
	stdin. May not be combined with any other options or arguments.

--batch-check::
	Print the SHA1, type, and size of each object provided on stdin. May not
	be combined with any other options or arguments.

OUTPUT
------
If '-t' is specified, one of the <type>.

If '-s' is specified, the size of the <object> in bytes.

If '-e' is specified, no output.

If '-p' is specified, the contents of <object> are pretty-printed.

If <type> is specified, the raw (though uncompressed) contents of the <object>
will be returned.

If '--batch' is specified, output of the following form is printed for each
object specified on stdin:

------------
<sha1> SP <type> SP <size> LF
<contents> LF
------------

If '--batch-check' is specified, output of the following form is printed for
each object specified on stdin:

------------
<sha1> SP <type> SP <size> LF
------------

For both '--batch' and '--batch-check', output of the following form is printed
for each object specified on stdin that does not exist in the repository:

------------
<object> SP missing LF
------------

Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

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