NAME
----
-git-ls-files - Information about files in the cache/working directory
+git-ls-files - Information about files in the index/working directory
SYNOPSIS
--------
-'git-ls-files' [-z] [-t]
+[verse]
+'git-ls-files' [-z] [-t] [-v]
(--[cached|deleted|others|ignored|stage|unmerged|killed|modified])\*
(-[c|d|o|i|s|u|k|m])\*
[-x <pattern>|--exclude=<pattern>]
[-X <file>|--exclude-from=<file>]
[--exclude-per-directory=<file>]
+ [--error-unmatch]
+ [--full-name] [--abbrev] [--] [<file>]\*
DESCRIPTION
-----------
-s|--stage::
Show stage files in the output
+--directory::
+ If a whole directory is classified as "other", show just its
+ name (with a trailing slash) and not its whole contents.
+
+--no-empty-directory::
+ Do not list empty directories. Has no effect without --directory.
+
-u|--unmerged::
Show unmerged files in the output (forces --stage)
-k|--killed::
Show files on the filesystem that need to be removed due
- to file/directory conflicts for checkout-cache to
+ to file/directory conflicts for checkout-index to
succeed.
-z::
- \0 line termination on output
+ \0 line termination on output.
-x|--exclude=<pattern>::
Skips files matching pattern.
read additional exclude patterns that apply only to the
directory and its subdirectories in <file>.
+--error-unmatch::
+ If any <file> does not appear in the index, treat this as an
+ error (return 1).
+
-t::
Identify the file status with the following tags (followed by
a space) at the start of each line:
- H cached
- M unmerged
- R removed/deleted
- C modifed/changed
- K to be killed
- ? other
+ H:: cached
+ M:: unmerged
+ R:: removed/deleted
+ C:: modified/changed
+ K:: to be killed
+ ?:: other
+
+-v::
+ Similar to `-t`, but use lowercase letters for files
+ that are marked as 'always matching index'.
+
+--full-name::
+ When run from a subdirectory, the command usually
+ outputs paths relative to the current directory. This
+ option forces paths to be output relative to the project
+ top directory.
+
+--abbrev[=<n>]::
+ Instead of showing the full 40-byte hexadecimal object
+ lines, show only handful hexdigits prefix.
+ Non default number of digits can be specified with --abbrev=<n>.
+
+--::
+ Do not interpret any more arguments as options.
+
+<file>::
+ Files to show. If no files are given all files which match the other
+ specified criteria are shown.
Output
------
the user (or the porcelain) to see what should eventually be recorded at the
path. (see git-read-tree for more information on state)
+When `-z` option is not used, TAB, LF, and backslash characters
+in pathnames are represented as `\t`, `\n`, and `\\`,
+respectively.
+
Exclude Patterns
----------------
These exclude patterns come from these places:
- (1) command line flag --exclude=<pattern> specifies a single
+ 1. command line flag --exclude=<pattern> specifies a single
pattern.
- (2) command line flag --exclude-from=<file> specifies a list of
+ 2. command line flag --exclude-from=<file> specifies a list of
patterns stored in a file.
- (3) command line flag --exclude-per-directory=<name> specifies
+ 3. command line flag --exclude-per-directory=<name> specifies
a name of the file in each directory 'git-ls-files'
examines, and if exists, its contents are used as an
additional list of patterns.
- otherwise, it is a shell glob pattern, suitable for
consumption by fnmatch(3) with FNM_PATHNAME flag. I.e. a
slash in the pattern must match a slash in the pathname.
- "Documentation/*.html" matches "Documentation/git.html" but
+ "Documentation/\*.html" matches "Documentation/git.html" but
not "ppc/ppc.html". As a natural exception, "/*.c" matches
"cat-file.c" but not "mozilla-sha1/sha1.c".
An example:
+--------------------------------------------------------------
$ cat .git/ignore
# ignore objects and archives, anywhere in the tree.
*.[oa]
--exclude='Documentation/*.[0-9]' \
--exclude-from=.git/ignore \
--exclude-per-directory=.gitignore
+--------------------------------------------------------------
See Also