Provide content or type and size information for repository objects
gitcat -file ( -t [ --allow -unknown -type]| -s [ --allow -unknown -type]| -e | -p | <type> | --textconv | --filters ) [ --path=<path>] <object> gitcat -file ( --batch | --batch -check) [ --textconv | --filters ] [ --follow -symlinks]
<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 gitrevisions (7).
-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 Exit with zero status if <object> exists and is a valid object . If <object> is of an invalid format exit with non -zero and emits an error on stderr .
-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 to be of the form <tree -ish>:<path>, or :<path> in order to apply the filter to the content recorded in the index at <path> .
--filters Show the content as converted by the filters configured in the current working tree for the given <path> (i .e . smudge filters, end -of -line conversion, etc) . In this case, <object> has to be of the form <tree -ish>:<path>, or :<path> .
--path=<path> For use with --textconv or --filters, to allow specifying an object name and a path separately, e .g . when it is difficult to figure out the revision from which the blob came .
--batch, --batch=<format> Print object information and contents for each object provided on stdin . May not be combined with any other options or arguments except --textconv or --filters ,in which case the input lines also need to specify the path, separated by whitespace . See the section BATCHOUTPUT below for details .
--batch -check, --batch -check=<format> Print object information for each object provided on stdin . May not be combined with any other options or arguments except --textconv or --filters ,in which case the input lines also need to specify the path, separated by whitespace . See the section BATCHOUTPUT below for details .
--batch -all -objects Instead of reading a list of objects on stdin, perform the requested batch operation on all objects in the repository and any alternate object stores (not just reachable objects) . Requires --batch or --batch -check be specified . Note that the objects are visited in order sorted by their hashes .
--buffer Normally batch output is flushed after each object is output, so that a process can interactively read and write from cat-file . With this option, the output uses normal stdio buffering; this is much more efficient when invoking --batch -check on a large number of objects .
--unordered When --batch -all -objects is in use, visit objects in an order which may be more efficient for accessing the object contents than hash order . The exact details of the order are unspecified, but if you do not require a specific order, this should generally result in faster output, especially with --batch . Note that cat-file will still show each object only once, even if it is stored multiple times in the repository .
--allow -unknown -type Allow -s or -t to query broken/corrupt objects of unknown type .
--follow -symlinks With --batch or --batch -check, follow symlinks inside the repository when requesting objects with extended SHA -1 expressions of the form tree -ish:path -in -tree . Instead of providing output about the link itself, provide output about the linked -to object . If a symlink points outside the tree -ish (e .g . a link to /foo or a root -level link to . ./foo), the portion of the link which is outside the tree will be printed .
f: a file containing "hello \ n" link: a symlink to f dir/link: a symlink to . ./f plink: a symlink to . ./f alink: a symlink to /etc/passwd .RE For a regular file f , echoHEAD:f | git cat -file --batch would print .RS 4
ce013625030ba8dba906f756967f9e9ca394464a blob 6 .RE And echoHEAD:link | git cat -file --batch --follow -symlinks would print the same thing, as would HEAD:dir/link ,as they both point at HEAD:f . Without --follow -symlinks ,these would print data about the symlink itself . In the case of HEAD:link ,you would see .RS 4
4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1 .RE Both plink and alink point outside the tree, so they would respectively print: .RS 4
symlink 4 . ./f .RE .RS 4
symlink 11 /etc/passwd .RE
objectname The 40 -hex object name of the object .
objecttype The type of the object (the same as cat-file -t reports) .
objectsize The size, in bytes, of the object (the same as cat-file -s reports) .
objectsize:disk The size, in bytes, that the object takes up on disk . See the note about on -disk sizes in the CAVEATS section below .
deltabase If the object is stored as a delta on -disk, this expands to the 40 -hex sha1 of the delta base object . Otherwise, expands to the null sha1 (40 zeroes) . See CAVEATS below .
rest If this atom is used in the output string, input lines are split at the first whitespace boundary . All characters before that whitespace are considered to be the object name; characters after that first run of whitespace (i .e ., the "rest" of the line) are output in place of the %(rest) atom . If no format is specified, the default format is %(objectname)%(objecttype) %(objectsize) . If --batch is specified, the object information is followed by the object contents (consisting of %(objectsize) bytes), followed by a newline . For example, --batch without a custom format would produce: .RS 4
<sha1> SP <type> SP <size> LF <contents> LF .RE Whereas --batch -check= (Aq%(objectname) %(objecttype) (Aq would produce: .RS 4
<sha1> SP <type> LF .RE If a name is specified on stdin that cannot be resolved to an object in the repository, then cat-file will ignore any custom format and print: .RS 4
<object> SP missing LF .RE If a name is specified that might refer to more than one object (an ambiguous short sha), then cat-file will ignore any custom format and print: .RS 4
<object> SP ambiguous LF .RE If --follow -symlinks is used, and a symlink in the repository points outside the repository, then cat-file will ignore any custom format and print: .RS 4
symlink SP <size> LF <symlink> LF .RE The symlink will either be absolute (beginning with a /), or relative to the tree root . For instance, if dir/link points to . ./ . ./foo, then <symlink> will be . ./foo . <size> is the size of the symlink in bytes . If --follow -symlinks is used, the following error messages will be displayed: .RS 4
<object> SP missing LF .RE is printed when the initial symlink requested does not exist . .RS 4
dangling SP <size> LF <object> LF .RE is printed when the initial symlink exists, but something that it (transitive -of) points to does not . .RS 4
loop SP <size> LF <object> LF .RE is printed for symlink loops (or any symlinks that require more than 40 link resolutions to resolve) . .RS 4
notdir SP <size> LF <object> LF .RE is printed when, during symlink resolution, a file is used as a directory name .