git-submodule: add support for --rebase.
[gitweb.git] / Documentation / git-ls-files.txt
index be83ab12fe6078d5feb39554c3eabe6f16809b3f..057a021eb50899ed5fe1ee5a7b6c59e7fc27becf 100644 (file)
@@ -1,19 +1,23 @@
 git-ls-files(1)
 ===============
-v0.1, May 2005
 
 NAME
 ----
-git-ls-files - Information about files in the cache/working directory
+git-ls-files - Show information about files in the index and the working tree
 
 
 SYNOPSIS
 --------
-'git-ls-files' [-z] [-t]
-               (--[cached|deleted|others|ignored|stage|unmerged|killed])\*
-               (-[c|d|o|i|s|u|k])\*
+[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>]
+               [--exclude-standard]
+               [--error-unmatch] [--with-tree=<tree-ish>]
+               [--full-name] [--abbrev] [--] [<file>]\*
 
 DESCRIPTION
 -----------
@@ -26,52 +30,111 @@ shown:
 
 OPTIONS
 -------
--c|--cached::
+-c::
+--cached::
        Show cached files in the output (default)
 
--d|--deleted::
+-d::
+--deleted::
        Show deleted files in the output
 
--o|--others::
+-m::
+--modified::
+       Show modified files in the output
+
+-o::
+--others::
        Show other files in the output
 
--i|--ignored::
-       Show ignored files in the output
-       Note the this also reverses any exclude list present.
+-i::
+--ignored::
+       Show ignored files in the output.
+       Note that this also reverses any exclude list present.
+
+-s::
+--stage::
+       Show staged contents' object name, mode bits and stage number 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.
 
--s|--stage::
-       Show stage files in the output
+--no-empty-directory::
+       Do not list empty directories. Has no effect without --directory.
 
--u|--unmerged::
+-u::
+--unmerged::
        Show unmerged files in the output (forces --stage)
 
--k|--killed::
+-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>::
+-x <pattern>::
+--exclude=<pattern>::
        Skips files matching pattern.
        Note that pattern is a shell wildcard pattern.
 
--X|--exclude-from=<file>::
+-X <file>::
+--exclude-from=<file>::
        exclude patterns are read from <file>; 1 per line.
-       Allows the use of the famous dontdiff file as follows to find
-       out about uncommitted files just as dontdiff is used with
-       the diff command:
-            git-ls-files --others --exclude-from=dontdiff
+
+--exclude-per-directory=<file>::
+       read additional exclude patterns that apply only to the
+       directory and its subdirectories in <file>.
+
+--exclude-standard::
+       Add the standard git exclusions: .git/info/exclude, .gitignore
+       in each directory, and the user's global exclusion file.
+
+--error-unmatch::
+       If any <file> does not appear in the index, treat this as an
+       error (return 1).
+
+--with-tree=<tree-ish>::
+       When using --error-unmatch to expand the user supplied
+       <file> (i.e. path pattern) arguments to paths, pretend
+       that paths which were removed in the index since the
+       named <tree-ish> are still present.  Using this option
+       with `-s` or `-u` options does not make any sense.
 
 -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
-       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 'assume unchanged' (see
+       linkgit:git-update-index[1]).
+
+--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 a partial 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
 ------
@@ -80,18 +143,53 @@ which case it outputs:
 
         [<tag> ]<mode> <object> <stage> <file>
 
-"git-ls-files --unmerged" and "git-ls-files --stage" can be used to examine
+'git-ls-files --unmerged' and 'git-ls-files --stage' can be used to examine
 detailed information on unmerged paths.
 
 For an unmerged path, instead of recording a single mode/SHA1 pair,
-the dircache records up to three such pairs; one from tree O in stage
+the index records up to three such pairs; one from tree O in stage
 1, A in stage 2, and B in stage 3.  This information can be used by
-the user (or Cogito) to see what should eventually be recorded at the
-path. (see read-cache for more information on state)
+the user (or the porcelain) to see what should eventually be recorded at the
+path. (see linkgit:git-read-tree[1] 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.
+
 
-See Also
+Exclude Patterns
+----------------
+
+'git-ls-files' can use a list of "exclude patterns" when
+traversing the directory tree and finding files to show when the
+flags --others or --ignored are specified.  linkgit:gitignore[5]
+specifies the format of exclude patterns.
+
+These exclude patterns come from these places, in order:
+
+  1. The command line flag --exclude=<pattern> specifies a
+     single pattern.  Patterns are ordered in the same order
+     they appear in the command line.
+
+  2. The command line flag --exclude-from=<file> specifies a
+     file containing a list of patterns.  Patterns are ordered
+     in the same order they appear in the file.
+
+  3. command line flag --exclude-per-directory=<name> specifies
+     a name of the file in each directory 'git-ls-files'
+     examines, normally `.gitignore`.  Files in deeper
+     directories take precedence.  Patterns are ordered in the
+     same order they appear in the files.
+
+A pattern specified on the command line with --exclude or read
+from the file specified with --exclude-from is relative to the
+top of the directory tree.  A pattern read from a file specified
+by --exclude-per-directory is relative to the directory that the
+pattern file appears in.
+
+SEE ALSO
 --------
-link:read-cache.html[read-cache]
+linkgit:git-read-tree[1], linkgit:gitignore[5]
 
 
 Author
@@ -100,9 +198,8 @@ Written by Linus Torvalds <torvalds@osdl.org>
 
 Documentation
 --------------
-Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+Documentation by David Greaves, Junio C Hamano, Josh Triplett, and the git-list <git@vger.kernel.org>.
 
 GIT
 ---
-Part of the link:git.html[git] suite
-
+Part of the linkgit:git[1] suite