Man page - git-ls-tree(1)
Packages contains this manual
- git-stash(1)
- gitcredentials(7)
- git-write-tree(1)
- git(1)
- git-mergetool--lib(1)
- git-tag(1)
- git-for-each-repo(1)
- git-upload-archive(1)
- git-credential-cache--daemon(1)
- git-count-objects(1)
- git-for-each-ref(1)
- git-merge-tree(1)
- git-fmt-merge-msg(1)
- git-update-ref(1)
- git-read-tree(1)
- git-init-db(1)
- git-restore(1)
- git-checkout-index(1)
- git-upload-pack(1)
- gittutorial-2(7)
- git-fast-export(1)
- git-verify-pack(1)
- git-remote(1)
- git-fsck(1)
- git-mailinfo(1)
- git-rerere(1)
- gitremote-helpers(7)
- git-log(1)
- git-rm(1)
- git-hash-object(1)
- git-fsmonitor--daemon(1)
- git-branch(1)
- git-check-ignore(1)
- git-request-pull(1)
- git-show(1)
- git-clone(1)
- git-init(1)
- gitglossary(7)
- git-index-pack(1)
- gitprotocol-http(5)
- git-mailsplit(1)
- git-patch-id(1)
- git-check-attr(1)
- git-diff-tree(1)
- git-unpack-objects(1)
- git-multi-pack-index(1)
- git-sh-setup(1)
- git-check-mailmap(1)
- git-revert(1)
- git-stripspace(1)
- git-commit-graph(1)
- gitformat-index(5)
- git-credential-store(1)
- gitnamespaces(7)
- gitformat-commit-graph(5)
- git-mv(1)
- git-diff-index(1)
- git-show-branch(1)
- gitrevisions(7)
- gitweb(1)
- git-imap-send(1)
- git-cat-file(1)
- githooks(5)
- git-subtree(1)
- git-merge-one-file(1)
- gitcore-tutorial(7)
- git-mktag(1)
- git-maintenance(1)
- gitprotocol-capabilities(5)
- git-quiltimport(1)
- git-status(1)
- git-help(1)
- gitmailmap(5)
- git-column(1)
- gitcli(7)
- git-fetch(1)
- git-var(1)
- git-prune(1)
- scalar(1)
- git-notes(1)
- git-symbolic-ref(1)
- git-bugreport(1)
- git-cherry-pick(1)
- git-difftool(1)
- gitworkflows(7)
- git-http-push(1)
- git-filter-branch(1)
- git-pack-objects(1)
- git-update-index(1)
- git-diff(1)
- git-credential(1)
- git-clean(1)
- gitprotocol-common(5)
- git-ls-tree(1)
- git-web--browse(1)
- gitcvs-migration(7)
- git-interpret-trailers(1)
- git-http-fetch(1)
- git-prune-packed(1)
- git-verify-commit(1)
- git-update-server-info(1)
- git-archive(1)
- git-rebase(1)
- git-pull(1)
- git-mktree(1)
- git-http-backend(1)
- gitattributes(5)
- git-repack(1)
- gittutorial(7)
- gitformat-signature(5)
- gitpacking(7)
- giteveryday(7)
- git-show-ref(1)
- git-format-patch(1)
- gitprotocol-pack(5)
- git-replay(1)
- git-fast-import(1)
- git-merge-base(1)
- git-merge-file(1)
- git-instaweb(1)
- git-diff-files(1)
- git-receive-pack(1)
- git-remote-fd(1)
- git-rev-list(1)
- git-sh-i18n(1)
- git-send-pack(1)
- gitmodules(5)
- git-range-diff(1)
- git-merge-index(1)
- git-get-tar-commit-id(1)
- git-ls-files(1)
- git-sparse-checkout(1)
- git-mergetool(1)
- git-replace(1)
- git-merge(1)
- gitignore(5)
- git-whatchanged(1)
- gitweb.conf(5)
- git-verify-tag(1)
- git-pack-refs(1)
- git-reset(1)
- gitrepository-layout(5)
- git-commit-tree(1)
- git-pack-redundant(1)
- gitformat-bundle(5)
- git-submodule(1)
- git-reflog(1)
- git-show-index(1)
- git-push(1)
- git-shortlog(1)
- git-gc(1)
- git-worktree(1)
- git-refs(1)
- git-bundle(1)
- git-hook(1)
- git-sh-i18n--envsubst(1)
- gitfaq(7)
- git-commit(1)
- git-check-ref-format(1)
- git-bisect(1)
- git-fsck-objects(1)
- git-daemon(1)
- git-cherry(1)
- git-ls-remote(1)
- git-blame(1)
- git-stage(1)
- git-name-rev(1)
- git-describe(1)
- git-remote-ext(1)
- git-diagnose(1)
- gitformat-pack(5)
- git-add(1)
- git-shell(1)
- git-unpack-file(1)
- git-apply(1)
- git-am(1)
- gitformat-chunk(5)
- git-annotate(1)
- git-checkout(1)
- git-fetch-pack(1)
- gitdiffcore(7)
- git-config(1)
- git-version(1)
- gitsubmodules(7)
- git-grep(1)
- git-credential-cache(1)
- gitprotocol-v2(5)
- git-rev-parse(1)
- git-switch(1)
apt-get install git-man
Manual
GIT-LS-TREE
NAMESYNOPSIS
DESCRIPTION
OPTIONS
OUTPUT FORMAT
FIELD NAMES
GIT
NAME
git-ls-tree - List the contents of a tree object
SYNOPSIS
git
ls-tree
[-d] [-r] [-t] [-l] [-z]
[--name-only] [--name-status] [--object-only] [--full-name]
[--full-tree] [--abbrev[=<n>]]
[--format=<format>]
<tree-ish> [<path>...]
DESCRIPTION
Lists the contents of a given tree object, like what "/bin/ls -a" does in the current working directory. Note that:
• the behaviour is slightly different from that of "/bin/ls" in that the <path> denotes just a list of patterns to match, e.g. so specifying directory name (without -r ) will behave differently, and order of the arguments does not matter.
• the behaviour is similar to that of "/bin/ls" in that the <path> is taken as relative to the current working directory. E.g. when you are in a directory sub that has a directory dir , you can run git ls-tree -r HEAD dir to list the contents of the tree (that is sub/dir in HEAD ). You don’t want to give a tree that is not at the root level (e.g. git ls-tree -r HEAD:sub dir ) in this case, as that would result in asking for sub/sub/dir in the HEAD commit. However, the current working directory can be ignored by passing --full-tree option.
OPTIONS
<tree-ish>
Id of a tree-ish.
-d
Show only the named tree entry itself, not its children.
-r
Recurse into sub-trees.
-t
Show tree entries even when going to recurse them. Has no effect if -r was not passed. -d implies -t .
-l, --long
Show object size of blob (file) entries.
-z
\0 line termination on output and do not quote filenames. See OUTPUT FORMAT below for more information.
--name-only, --name-status
List only filenames (instead of the "long" output), one per line. Cannot be combined with --object-only .
--object-only
List only names of the objects, one per line. Cannot be combined with --name-only or --name-status . This is equivalent to specifying --format='%(objectname)' , but for both this option and that exact format the command takes a hand-optimized codepath instead of going through the generic formatting mechanism.
--abbrev[=<n>]
Instead of showing the full 40-byte hexadecimal object lines, show the shortest prefix that is at least <n> hexdigits long that uniquely refers the object. Non default number of digits can be specified with --abbrev=<n>.
--full-name
Instead of showing the path names relative to the current working directory, show the full path names.
--full-tree
Do not limit the listing to the current working directory. Implies --full-name.
--format=<format>
A string that interpolates %(fieldname) from the result being shown. It also interpolates %% to % , and %xNN where NN are hex digits interpolates to character with hex code NN ; for example %x00 interpolates to \0 (NUL), %x09 to \t (TAB) and %x0a to \n (LF). When specified, --format cannot be combined with other format-altering options, including --long , --name-only and --object-only .
[<path>...]
When paths are given, show them (note that this isn’t really raw pathnames, but rather a list of patterns to match). Otherwise implicitly uses the root level of the tree as the sole path argument.
OUTPUT FORMAT
The output format of ls-tree is determined by either the --format option, or other format-altering options such as --name-only etc. (see --format above).
The use of certain --format directives is equivalent to using those options, but invoking the full formatting machinery can be slower than using an appropriate formatting option.
In cases where the --format would exactly map to an existing option ls-tree will use the appropriate faster path. Thus the default format is equivalent to:
%(objectmode) %(objecttype) %(objectname)%x09%(path)
This output format is compatible with what --index-info --stdin of git update-index expects.
When the -l option is used, format changes to
%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)
Object size identified by <objectname> is given in bytes, and right-justified with minimum width of 7 characters. Object size is given only for blobs (file) entries; for other entries - character is used in place of size.
Without the -z option, pathnames with "unusual" characters are quoted as explained for the configuration variable core.quotePath (see git-config (1)). Using -z the filename is output verbatim and the line is terminated by a NUL byte.
Customized format:
It is possible to print in a custom format by using the --format option, which is able to interpolate different fields using a %(fieldname) notation. For example, if you only care about the "objectname" and "path" fields, you can execute with a specific "--format" like
git ls-tree --format='%(objectname) %(path)' <tree-ish>
FIELD NAMES
Various values from structured fields can be used to interpolate into the resulting output. For each outputting line, the following names can be used:
objectmode
The mode of the object.
objecttype
The type of the object ( commit , blob or tree ).
objectname
The name of the object.
objectsize[:padded]
The size of a blob object ("-" if it’s a commit or tree ). It also supports a padded format of size with "%(objectsize:padded)".
path
The pathname of the object.
GIT
Part of the git (1) suite