Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | git-ls-files(1) |
| 2 | =============== |
| 3 | |
| 4 | NAME |
| 5 | ---- |
Junio C Hamano | 7c73c66 | 2007-01-19 00:37:50 | [diff] [blame] | 6 | git-ls-files - Show information about files in the index and the working tree |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 7 | |
| 8 | |
| 9 | SYNOPSIS |
| 10 | -------- |
Junio C Hamano | 7e9f6b7 | 2006-02-22 10:44:55 | [diff] [blame] | 11 | [verse] |
Junio C Hamano | d710560 | 2017-11-21 05:32:50 | [diff] [blame] | 12 | 'git ls-files' [-z] [-t] [-v] [-f] |
Junio C Hamano | 59a32b0 | 2021-12-10 22:53:38 | [diff] [blame] | 13 | [-c|--cached] [-d|--deleted] [-o|--others] [-i|--|ignored] |
| 14 | [-s|--stage] [-u|--unmerged] [-k|--|killed] [-m|--modified] |
| 15 | [--directory [--no-empty-directory]] [--eol] |
Junio C Hamano | 8c860d6 | 2021-02-06 01:37:47 | [diff] [blame] | 16 | [--deduplicate] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 17 | [-x <pattern>|--exclude=<pattern>] |
| 18 | [-X <file>|--exclude-from=<file>] |
Junio C Hamano | 5c3957e | 2006-03-28 00:28:01 | [diff] [blame] | 19 | [--exclude-per-directory=<file>] |
Junio C Hamano | ff97979 | 2007-11-16 10:11:30 | [diff] [blame] | 20 | [--exclude-standard] |
Junio C Hamano | 58155b4 | 2007-09-15 07:46:14 | [diff] [blame] | 21 | [--error-unmatch] [--with-tree=<tree-ish>] |
Junio C Hamano | 4a401d5 | 2016-10-26 22:24:37 | [diff] [blame] | 22 | [--full-name] [--recurse-submodules] |
Junio C Hamano | ee43d18 | 2020-11-11 22:10:41 | [diff] [blame] | 23 | [--abbrev[=<n>]] [--] [<file>...] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 24 | |
| 25 | DESCRIPTION |
| 26 | ----------- |
Junio C Hamano | 7887f9b | 2021-01-25 23:32:33 | [diff] [blame] | 27 | This merges the file listing in the index with the actual working |
| 28 | directory list, and shows different combinations of the two. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 29 | |
| 30 | One or more of the options below may be used to determine the files |
| 31 | shown: |
| 32 | |
| 33 | OPTIONS |
| 34 | ------- |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 35 | -c:: |
| 36 | --cached:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 37 | Show cached files in the output (default) |
| 38 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 39 | -d:: |
| 40 | --deleted:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 41 | Show deleted files in the output |
| 42 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 43 | -m:: |
| 44 | --modified:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 45 | Show modified files in the output |
| 46 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 47 | -o:: |
| 48 | --others:: |
Junio C Hamano | 31cca16 | 2009-08-07 05:40:01 | [diff] [blame] | 49 | Show other (i.e. untracked) files in the output |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 50 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 51 | -i:: |
| 52 | --ignored:: |
Junio C Hamano | 446ed77 | 2009-11-10 22:02:20 | [diff] [blame] | 53 | Show only ignored files in the output. When showing files in the |
| 54 | index, print only those matched by an exclude pattern. When |
| 55 | showing "other" files, show only those matched by an exclude |
Junio C Hamano | b9d9d90 | 2018-05-23 07:07:42 | [diff] [blame] | 56 | pattern. Standard ignore rules are not automatically activated, |
| 57 | therefore at least one of the `--exclude*` options is required. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 58 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 59 | -s:: |
| 60 | --stage:: |
Junio C Hamano | 761b481 | 2017-04-17 07:27:59 | [diff] [blame] | 61 | Show staged contents' mode bits, object name and stage number in the output. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 62 | |
Junio C Hamano | a6331a8 | 2006-01-22 07:50:33 | [diff] [blame] | 63 | --directory:: |
| 64 | If a whole directory is classified as "other", show just its |
| 65 | name (with a trailing slash) and not its whole contents. |
| 66 | |
Junio C Hamano | f02e09f | 2006-03-27 07:51:03 | [diff] [blame] | 67 | --no-empty-directory:: |
| 68 | Do not list empty directories. Has no effect without --directory. |
| 69 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 70 | -u:: |
| 71 | --unmerged:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 72 | Show unmerged files in the output (forces --stage) |
| 73 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 74 | -k:: |
| 75 | --killed:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 76 | Show files on the filesystem that need to be removed due |
| 77 | to file/directory conflicts for checkout-index to |
| 78 | succeed. |
| 79 | |
| 80 | -z:: |
Junio C Hamano | 0f6f3bf | 2017-03-13 07:01:53 | [diff] [blame] | 81 | \0 line termination on output and do not quote filenames. |
| 82 | See OUTPUT below for more information. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 83 | |
Junio C Hamano | 8c860d6 | 2021-02-06 01:37:47 | [diff] [blame] | 84 | --deduplicate:: |
| 85 | When only filenames are shown, suppress duplicates that may |
| 86 | come from having multiple stages during a merge, or giving |
| 87 | `--deleted` and `--modified` option at the same time. |
| 88 | When any of the `-t`, `--unmerged`, or `--stage` option is |
| 89 | in use, this option has no effect. |
| 90 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 91 | -x <pattern>:: |
| 92 | --exclude=<pattern>:: |
Junio C Hamano | ac752fa | 2010-09-19 00:01:00 | [diff] [blame] | 93 | Skip untracked files matching pattern. |
| 94 | Note that pattern is a shell wildcard pattern. See EXCLUDE PATTERNS |
| 95 | below for more information. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 96 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 97 | -X <file>:: |
| 98 | --exclude-from=<file>:: |
Junio C Hamano | ac752fa | 2010-09-19 00:01:00 | [diff] [blame] | 99 | Read exclude patterns from <file>; 1 per line. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 100 | |
| 101 | --exclude-per-directory=<file>:: |
Junio C Hamano | ac752fa | 2010-09-19 00:01:00 | [diff] [blame] | 102 | Read additional exclude patterns that apply only to the |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 103 | directory and its subdirectories in <file>. |
| 104 | |
Junio C Hamano | ff97979 | 2007-11-16 10:11:30 | [diff] [blame] | 105 | --exclude-standard:: |
Junio C Hamano | 076ffcc | 2013-02-06 05:13:21 | [diff] [blame] | 106 | Add the standard Git exclusions: .git/info/exclude, .gitignore |
Junio C Hamano | ff97979 | 2007-11-16 10:11:30 | [diff] [blame] | 107 | in each directory, and the user's global exclusion file. |
| 108 | |
Junio C Hamano | 7e9f6b7 | 2006-02-22 10:44:55 | [diff] [blame] | 109 | --error-unmatch:: |
| 110 | If any <file> does not appear in the index, treat this as an |
| 111 | error (return 1). |
| 112 | |
Junio C Hamano | 58155b4 | 2007-09-15 07:46:14 | [diff] [blame] | 113 | --with-tree=<tree-ish>:: |
| 114 | When using --error-unmatch to expand the user supplied |
| 115 | <file> (i.e. path pattern) arguments to paths, pretend |
| 116 | that paths which were removed in the index since the |
| 117 | named <tree-ish> are still present. Using this option |
| 118 | with `-s` or `-u` options does not make any sense. |
| 119 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 120 | -t:: |
Junio C Hamano | a978876 | 2010-08-03 15:15:54 | [diff] [blame] | 121 | This feature is semi-deprecated. For scripting purpose, |
| 122 | linkgit:git-status[1] `--porcelain` and |
| 123 | linkgit:git-diff-files[1] `--name-status` are almost always |
| 124 | superior alternatives, and users should look at |
| 125 | linkgit:git-status[1] `--short` or linkgit:git-diff[1] |
| 126 | `--name-status` for more user-friendly alternatives. |
| 127 | + |
Junio C Hamano | 792b609 | 2019-05-13 16:03:59 | [diff] [blame] | 128 | -- |
Junio C Hamano | a978876 | 2010-08-03 15:15:54 | [diff] [blame] | 129 | This option identifies the file status with the following tags (followed by |
| 130 | a space) at the start of each line: |
| 131 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 132 | H:: cached |
Junio C Hamano | 3c8d670 | 2010-01-13 23:09:03 | [diff] [blame] | 133 | S:: skip-worktree |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 134 | M:: unmerged |
| 135 | R:: removed/deleted |
Junio C Hamano | 235a91e | 2006-01-07 01:13:58 | [diff] [blame] | 136 | C:: modified/changed |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 137 | K:: to be killed |
Junio C Hamano | 6697ac5 | 2006-02-14 08:00:23 | [diff] [blame] | 138 | ?:: other |
Junio C Hamano | 792b609 | 2019-05-13 16:03:59 | [diff] [blame] | 139 | -- |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 140 | |
Junio C Hamano | 7e9f6b7 | 2006-02-22 10:44:55 | [diff] [blame] | 141 | -v:: |
| 142 | Similar to `-t`, but use lowercase letters for files |
Junio C Hamano | f556fc2 | 2007-12-23 08:16:38 | [diff] [blame] | 143 | that are marked as 'assume unchanged' (see |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 144 | linkgit:git-update-index[1]). |
Junio C Hamano | 7e9f6b7 | 2006-02-22 10:44:55 | [diff] [blame] | 145 | |
Junio C Hamano | d710560 | 2017-11-21 05:32:50 | [diff] [blame] | 146 | -f:: |
| 147 | Similar to `-t`, but use lowercase letters for files |
| 148 | that are marked as 'fsmonitor valid' (see |
| 149 | linkgit:git-update-index[1]). |
| 150 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 151 | --full-name:: |
| 152 | When run from a subdirectory, the command usually |
| 153 | outputs paths relative to the current directory. This |
| 154 | option forces paths to be output relative to the project |
| 155 | top directory. |
| 156 | |
Junio C Hamano | 4a401d5 | 2016-10-26 22:24:37 | [diff] [blame] | 157 | --recurse-submodules:: |
Junio C Hamano | 0dd5094 | 2020-04-29 21:21:05 | [diff] [blame] | 158 | Recursively calls ls-files on each active submodule in the repository. |
Junio C Hamano | c7a8d87 | 2022-03-07 22:41:20 | [diff] [blame] | 159 | Currently there is only support for the --cached and --stage modes. |
Junio C Hamano | 4a401d5 | 2016-10-26 22:24:37 | [diff] [blame] | 160 | |
Junio C Hamano | 5c3957e | 2006-03-28 00:28:01 | [diff] [blame] | 161 | --abbrev[=<n>]:: |
| 162 | Instead of showing the full 40-byte hexadecimal object |
Junio C Hamano | ee43d18 | 2020-11-11 22:10:41 | [diff] [blame] | 163 | lines, show the shortest prefix that is at least '<n>' |
| 164 | hexdigits long that uniquely refers the object. |
Junio C Hamano | 5c3957e | 2006-03-28 00:28:01 | [diff] [blame] | 165 | Non default number of digits can be specified with --abbrev=<n>. |
| 166 | |
Junio C Hamano | a978876 | 2010-08-03 15:15:54 | [diff] [blame] | 167 | --debug:: |
| 168 | After each line that describes a file, add more data about its |
| 169 | cache entry. This is intended to show as much information as |
| 170 | possible for manual inspection; the exact format may change at |
| 171 | any time. |
| 172 | |
Junio C Hamano | ffe10ca | 2016-02-04 00:44:23 | [diff] [blame] | 173 | --eol:: |
| 174 | Show <eolinfo> and <eolattr> of files. |
| 175 | <eolinfo> is the file content identification used by Git when |
| 176 | the "text" attribute is "auto" (or not set and core.autocrlf is not false). |
| 177 | <eolinfo> is either "-text", "none", "lf", "crlf", "mixed" or "". |
| 178 | + |
| 179 | "" means the file is not a regular file, it is not in the index or |
Junio C Hamano | 03a41f3 | 2016-03-04 22:22:15 | [diff] [blame] | 180 | not accessible in the working tree. |
Junio C Hamano | ffe10ca | 2016-02-04 00:44:23 | [diff] [blame] | 181 | + |
| 182 | <eolattr> is the attribute that is used when checking out or committing, |
| 183 | it is either "", "-text", "text", "text=auto", "text eol=lf", "text eol=crlf". |
Junio C Hamano | e7808d7 | 2016-08-26 21:48:01 | [diff] [blame] | 184 | Since Git 2.10 "text=auto eol=lf" and "text=auto eol=crlf" are supported. |
Junio C Hamano | ffe10ca | 2016-02-04 00:44:23 | [diff] [blame] | 185 | + |
| 186 | Both the <eolinfo> in the index ("i/<eolinfo>") |
| 187 | and in the working tree ("w/<eolinfo>") are shown for regular files, |
| 188 | followed by the ("attr/<eolattr>"). |
| 189 | |
Junio C Hamano | 9d060b8 | 2022-01-10 21:34:48 | [diff] [blame] | 190 | --sparse:: |
| 191 | If the index is sparse, show the sparse directories without expanding |
| 192 | to the contained files. Sparse directories will be shown with a |
| 193 | trailing slash, such as "x/" for a sparse directory "x". |
| 194 | |
Junio C Hamano | 1bb569e | 2006-05-05 23:14:25 | [diff] [blame] | 195 | \--:: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 196 | Do not interpret any more arguments as options. |
| 197 | |
| 198 | <file>:: |
| 199 | Files to show. If no files are given all files which match the other |
| 200 | specified criteria are shown. |
| 201 | |
Junio C Hamano | b9d9d90 | 2018-05-23 07:07:42 | [diff] [blame] | 202 | OUTPUT |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 203 | ------ |
Junio C Hamano | 92d8037 | 2016-07-13 22:00:05 | [diff] [blame] | 204 | 'git ls-files' just outputs the filenames unless `--stage` is specified in |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 205 | which case it outputs: |
| 206 | |
| 207 | [<tag> ]<mode> <object> <stage> <file> |
| 208 | |
Junio C Hamano | ffe10ca | 2016-02-04 00:44:23 | [diff] [blame] | 209 | 'git ls-files --eol' will show |
| 210 | i/<eolinfo><SPACES>w/<eolinfo><SPACES>attr/<eolattr><SPACE*><TAB><file> |
| 211 | |
Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 212 | 'git ls-files --unmerged' and 'git ls-files --stage' can be used to examine |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 213 | detailed information on unmerged paths. |
| 214 | |
Junio C Hamano | e3f080d | 2013-04-22 02:27:13 | [diff] [blame] | 215 | For an unmerged path, instead of recording a single mode/SHA-1 pair, |
Junio C Hamano | 3646098 | 2007-05-27 04:29:12 | [diff] [blame] | 216 | the index records up to three such pairs; one from tree O in stage |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 217 | 1, A in stage 2, and B in stage 3. This information can be used by |
| 218 | the user (or the porcelain) to see what should eventually be recorded at the |
Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 219 | path. (see linkgit:git-read-tree[1] for more information on state) |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 220 | |
Junio C Hamano | 0f6f3bf | 2017-03-13 07:01:53 | [diff] [blame] | 221 | Without the `-z` option, pathnames with "unusual" characters are |
| 222 | quoted as explained for the configuration variable `core.quotePath` |
| 223 | (see linkgit:git-config[1]). Using `-z` the filename is output |
| 224 | verbatim and the line is terminated by a NUL byte. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 225 | |
| 226 | |
Junio C Hamano | b9d9d90 | 2018-05-23 07:07:42 | [diff] [blame] | 227 | EXCLUDE PATTERNS |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 228 | ---------------- |
| 229 | |
Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 230 | 'git ls-files' can use a list of "exclude patterns" when |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 231 | traversing the directory tree and finding files to show when the |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 232 | flags --others or --ignored are specified. linkgit:gitignore[5] |
Junio C Hamano | 679d22d | 2007-06-02 21:13:44 | [diff] [blame] | 233 | specifies the format of exclude patterns. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 234 | |
Junio C Hamano | 679d22d | 2007-06-02 21:13:44 | [diff] [blame] | 235 | These exclude patterns come from these places, in order: |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 236 | |
Junio C Hamano | e1aeb5e | 2014-06-06 19:16:29 | [diff] [blame] | 237 | 1. The command-line flag --exclude=<pattern> specifies a |
Junio C Hamano | 679d22d | 2007-06-02 21:13:44 | [diff] [blame] | 238 | single pattern. Patterns are ordered in the same order |
| 239 | they appear in the command line. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 240 | |
Junio C Hamano | e1aeb5e | 2014-06-06 19:16:29 | [diff] [blame] | 241 | 2. The command-line flag --exclude-from=<file> specifies a |
Junio C Hamano | 679d22d | 2007-06-02 21:13:44 | [diff] [blame] | 242 | file containing a list of patterns. Patterns are ordered |
| 243 | in the same order they appear in the file. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 244 | |
Junio C Hamano | e1aeb5e | 2014-06-06 19:16:29 | [diff] [blame] | 245 | 3. The command-line flag --exclude-per-directory=<name> specifies |
Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 246 | a name of the file in each directory 'git ls-files' |
Junio C Hamano | 679d22d | 2007-06-02 21:13:44 | [diff] [blame] | 247 | examines, normally `.gitignore`. Files in deeper |
| 248 | directories take precedence. Patterns are ordered in the |
| 249 | same order they appear in the files. |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 250 | |
| 251 | A pattern specified on the command line with --exclude or read |
| 252 | from the file specified with --exclude-from is relative to the |
| 253 | top of the directory tree. A pattern read from a file specified |
| 254 | by --exclude-per-directory is relative to the directory that the |
| 255 | pattern file appears in. |
| 256 | |
Junio C Hamano | 9049d91 | 2008-05-29 02:09:50 | [diff] [blame] | 257 | SEE ALSO |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 258 | -------- |
Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 259 | linkgit:git-read-tree[1], linkgit:gitignore[5] |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 260 | |
Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 261 | GIT |
| 262 | --- |
Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 263 | Part of the linkgit:git[1] suite |