git-ls-files - 显示有关索引和工作树中文件的信息
git ls-files [-z] [-t] [-v] [-f]
(--[cached|deleted|others|ignored|stage|unmerged|killed|modified])*
(-[c|d|o|i|s|u|k|m])*
[--eol]
[-x <pattern>|--exclude=<pattern>]
[-X <file>|--exclude-from=<file>]
[--exclude-per-directory=<file>]
[--exclude-standard]
[--error-unmatch] [--with-tree=<tree-ish>]
[--full-name] [--recurse-submodules]
[--abbrev] [--] [<file>…]
这将目录缓存索引中的文件列表与实际工作目录列表合并,并显示两者的不同组合。
下面的一个或多个选项可用于确定显示的文件:
-c --cached
在输出中显示缓存的文件(默认)
-d --deleted
在输出中显示已删除的文件
-m --modified
在输出中显示已修改的文件
-o --others
在输出中显示其他(即未跟踪的)文件
-i --ignored
在输出中只显示被忽略的文件。在索引中显示文件时,只打印排除模式匹配的文件。显示“其他”文件时,只显示通过排除模式匹配的文件。
-s --stage
在输出中显示暂存内容的模式位,对象名称和阶段编号。
--directory
如果整个目录被分类为“其他”,则只显示其名称(带有斜线)而不是其全部内容。
--no-empty-directory
不要列出空目录。没有 - 目录无效。
-u --unmerged
在输出中显示未合并的文件(forces --stage)
-k --killed
在文件系统上显示由于文件/目录冲突而需要删除的文件以使checkout-index成功。
-z
\0行输出终止,不要引用文件名。有关更多信息,请参阅下面的OUTPUT。
-x <pattern> --exclude=<pattern>
跳过未匹配的文件匹配模式。请注意,模式是一个外壳通配符模式。有关更多信息,请参阅下面的EXCLUDE PATTERNS。
-X <file> --exclude-from=<file>
从<file>读取排除模式; 每行1个。
--exclude-per-directory=<file>
读取仅适用于<file>中的目录及其子目录的其他排除模式。
--exclude-standard
在每个目录中添加标准Git排除项:.git / info / exclude,.gitignore和用户的全局排除文件。
--error-unmatch
如果任何<file>没有出现在索引中,则将其视为错误(返回1)。
--with-tree=<tree-ish>
当使用--error-unmatch将用户提供的<file>(即路径模式)参数展开为路径时,假定自从指定的<tree-ish>后索引中删除的路径仍存在。使用此选项-s或-u选项没有任何意义。
-t
此功能已半弃用。对于编写脚本的目的,git-status [1] --porcelain和git-diff-files [1] --name-status几乎总是优越的选择,用户应该查看git-status [1] --short或git-diff [1] --name-status以获得更多用户友好的选择。
此选项在每行开始时用以下标记(后跟一个空格)标识文件状态:
H
缓存
S
skip-worktree
M
未合并
R
removed/deleted
C
modified/changed
K
to be killed
?
other
-v
与-t标记为assume unchanged(请参阅git-update-index [1])的文件类似,但使用小写字母。
--full-name
从子目录运行时,该命令通常会输出相对于当前目录的路径。该选项强制相对于项目顶部目录输出路径。
--recurse-submodules
在存储库中的每个子模块上递归调用ls-files。目前只支持 - 高速缓存模式。
--abbrev=<n>
不显示完整的40字节十六进制对象行,只显示部分前缀。非默认位数可以用--abbrev = <n>来指定。
--debug
在描述文件的每一行之后,添加更多关于其缓存条目的数据。这旨在显示尽可能多的手动检查信息; 确切的格式可能会随时更改。
--eol
显示文件的<eolinfo>和<eolattr>。<eolinfo>是当“text”属性为“auto”(或未设置且core.autocrlf不为false)时由Git使用的文件内容标识。<eolinfo>是“文本”,“无”,“lf”,“crlf”,“混合”或“”。
“”表示该文件不是常规文件,它不在索引中或在工作树中无法访问。
它是“”,“ - text”,“text”,“text = auto”,“text eol = lf”,“text eol = crlf”时检查或提交时使用的属性。由于支持Git 2.10“text = auto eol = lf”和“text = auto eol = crlf”。
索引(“i / <eolinfo>”)和工作树(“w / <eolinfo>”)中的<eolinfo>均显示为常规文件,后面跟着(“attr / <eolattr>”)。
不要将更多的参数解释为选项。
<file>
要显示的文件。如果没有给出文件,则显示与其他指定标准相匹配的所有文件。
例子:我们在工作区新建了test2.txt和test3.txt,并查看暂存区文件的变化,
对这两个文件一起进行add,我们查看index发现这两个文件的SHA-1值是一样的e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
然后给test2.txt文件添加内容"test2 first line"并add,发现两个值不一样了
yaosht@yaosht-PC MINGW64 ~/gitclient (master)
$ touch test2.txt
yaosht@yaosht-PC MINGW64 ~/gitclient (master)
$ touch test3.txt
yaosht@yaosht-PC MINGW64 ~/gitclient (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: test.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
test2.txt
test3.txt
yaosht@yaosht-PC MINGW64 ~/gitclient (master)
$ git add test2.txt test3.txt
yaosht@yaosht-PC MINGW64 ~/gitclient (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: test.txt
new file: test2.txt
new file: test3.txt
yaosht@yaosht-PC MINGW64 ~/gitclient (master)
$ cd .git
l
yaosht@yaosht-PC MINGW64 ~/gitclient/.git (GIT_DIR!)
$ git ls-files -s
100644 54b2fa9ce1e9110abf16bfa55053aef717a6c8e8 0 .gitignore
100644 b180ac571959898b0587adcc61376b06947e9aae 0 README.en.md
100644 a8bce25e3e3ef95a8aded942c12fd54d5c70b589 0 README.md
100644 08fe2720d8e3fe3a5f81fbb289bc4c7a522f13da 0 test.txt
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 test2.txt
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 test3.txt
yaosht@yaosht-PC MINGW64 ~/gitclient (master)
$ echo "test2 first line" >> test2.txt
yaosht@yaosht-PC MINGW64 ~/gitclient/.git (GIT_DIR!)
$ git ls-files -s
100644 54b2fa9ce1e9110abf16bfa55053aef717a6c8e8 0 .gitignore
100644 b180ac571959898b0587adcc61376b06947e9aae 0 README.en.md
100644 a8bce25e3e3ef95a8aded942c12fd54d5c70b589 0 README.md
100644 08fe2720d8e3fe3a5f81fbb289bc4c7a522f13da 0 test.txt
100644 a2246f0bf1a5f2cb401c8ad02d37f442bc1e18a8 0 test2.txt
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 test3.txt