安装和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
补丁
调试
邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.46.2 → 2.47.0 无更改
- 2.46.1 09/13/24
- 2.44.1 → 2.46.0 无更改
- 2.44.0 02/23/24
- 2.43.1 → 2.43.5 无更改
- 2.43.0 11/20/23
- 2.42.1 → 2.42.3 无更改
- 2.42.0 08/21/23
- 2.40.1 → 2.41.2 无更改
- 2.40.0 03/12/23
- 2.39.1 → 2.39.5 无更改
- 2.39.0 12/12/22
- 2.38.1 → 2.38.5 无更改
- 2.38.0 10/02/22
- 2.36.1 → 2.37.7 无更改
- 2.36.0 04/18/22
- 2.35.1 → 2.35.8 无更改
- 2.35.0 01/24/22
- 2.31.1 → 2.34.8 无更改
- 2.31.0 03/15/21
- 2.30.2 → 2.30.9 无更改
- 2.30.1 02/08/21
- 2.30.0 12/27/20
- 2.27.1 → 2.29.3 无更改
- 2.27.0 06/01/20
- 2.22.1 → 2.26.3 无更改
- 2.22.0 06/07/19
- 2.18.1 → 2.21.4 无更改
- 2.18.0 06/21/18
- 2.17.0 → 2.17.6 无更改
- 2.16.6 12/06/19
- 2.14.6 → 2.15.4 无更改
- 2.13.7 05/22/18
- 2.12.5 无更改
- 2.11.4 09/22/17
- 2.10.5 09/22/17
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.2.3 → 2.7.6 无更改
- 2.1.4 12/17/14
- 2.0.5 12/17/14
概要
git ls-files [-z] [-t] [-v] [-f] [-c|--cached] [-d|--deleted] [-o|--others] [-i|--ignored] [-s|--stage] [-u|--unmerged] [-k|--killed] [-m|--modified] [--resolve-undo] [--directory [--no-empty-directory]] [--eol] [--deduplicate] [-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[=<n>]] [--format=<format>] [--] [<file>…]
选项
- -c
- --cached
-
显示 Git 索引中缓存的所有文件,即所有已跟踪文件。(如果未指定 -c/-s/-d/-o/-u/-k/-m/--resolve-undo 选项,则为默认值。)
- -d
- --deleted
-
显示未暂存删除的文件
- -m
- --modified
-
显示未暂存修改的文件(注意,未暂存删除也计为未暂存修改)
- -o
- --others
-
在输出中显示其他(即未跟踪)文件
- -i
- --ignored
-
仅在输出中显示被忽略的文件。必须与显式的 -c 或 -o 一起使用。当显示索引中的文件(即与 -c 一起使用)时,仅打印匹配排除模式的文件。当显示“其他”文件(即与 -o 一起使用)时,仅显示匹配排除模式的文件。标准忽略规则不会自动激活;因此,至少需要一个
--exclude*
选项。 - -s
- --stage
-
在输出中显示暂存内容的模式位、对象名称和阶段编号。
- --directory
-
如果整个目录被归类为“其他”,则仅显示其名称(带尾部斜杠),而不显示其全部内容。在没有 -o/--others 的情况下无效。
- --no-empty-directory
-
不列出空目录。在没有 --directory 的情况下无效。
- -u
- --unmerged
-
显示有关输出中未合并文件的相关信息,但不显示任何其他已跟踪文件(强制 --stage,覆盖 --cached)。
- -k
- --killed
-
显示文件系统上需要删除的未跟踪文件,因为文件/目录冲突导致无法将已跟踪文件写入文件系统。
- --resolve-undo
-
显示索引中具有 resolve-undo 信息的文件及其 resolve-undo 信息。(resolve-undo 信息用于实现“git checkout -m $PATH”,即重新创建意外解决的合并冲突)
- -z
-
\0 行尾终止符,并且不引用文件名。有关更多信息,请参见下面的 OUTPUT。
- --deduplicate
-
当仅显示文件名时,抑制可能来自合并期间具有多个阶段或同时给出
--deleted
和--modified
选项的重复项。当使用任何-t
、--unmerged
或--stage
选项时,此选项无效。 - -x <pattern>
- --exclude=<pattern>
-
跳过匹配模式的未跟踪文件。注意,模式是 shell 通配符模式。有关更多信息,请参见下面的 EXCLUDE PATTERNS。
- -X <file>
- --exclude-from=<file>
-
从 <file> 中读取排除模式;每行 1 个。
- --exclude-per-directory=<file>
-
读取仅适用于 <file> 中的目录及其子目录的额外排除模式。如果你试图模拟 Porcelain 命令的工作方式,使用
--exclude-standard
选项会更容易更彻底。 - --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
作为更友好的替代方案。 - -v
-
与
-t
类似,但对于标记为假定不变的文件(参见 git-update-index[1])使用小写字母。 - -f
-
与
-t
类似,但对于标记为fsmonitor 有效的文件(参见 git-update-index[1])使用小写字母。 - --full-name
-
当从子目录运行时,命令通常输出相对于当前目录的路径。此选项强制路径相对于项目顶层目录输出。
- --recurse-submodules
-
递归地对存储库中的每个活动子模块调用 ls-files。目前只支持 --cached 和 --stage 模式。
- --abbrev[=<n>]
-
不显示完整的 40 字节十六进制对象行,而是显示最短的前缀,该前缀至少为 <n> 个十六进制数字长,并且唯一地引用该对象。可以使用 --abbrev=<n> 指定非默认的数字。
- --debug
-
在描述文件的每一行之后,添加有关其缓存条目更多数据。这旨在尽可能多地显示信息以供手动检查;确切的格式可能会随时更改。
- --eol
-
显示文件的 <eolinfo> 和 <eolattr>。<eolinfo> 是 Git 在 "text" 属性为 "auto"(或未设置且 core.autocrlf 不为 false)时使用的文件内容标识。<eolinfo> 为 "-text"、"none"、"lf"、"crlf"、"mixed" 或 "" 之一。
"" 表示该文件不是常规文件,它不在索引中或在工作树中不可访问。
<eolattr> 是签出或提交时使用的属性,它为 ""、"-text"、"text"、"text=auto"、"text eol=lf"、"text eol=crlf" 之一。从 Git 2.10 开始,支持 "text=auto eol=lf" 和 "text=auto eol=crlf"。
对于常规文件,将显示索引中的 <eolinfo> ("i/<eolinfo>") 和工作树中的 <eolinfo> ("w/<eolinfo>"),后跟 ("attr/<eolattr>")。
- --sparse
-
如果索引是稀疏的,则显示稀疏目录,而不扩展到包含的文件。稀疏目录将以尾部斜杠显示,例如 "x/" 用于稀疏目录 "x"。
- --format=<format>
-
一个字符串,它从要显示的结果中插值
%(fieldname)
。它还将%%
插值到%
,以及%xXX
,其中XX
是十六进制数字,插值到十六进制代码为XX
的字符;例如,%x00
插值到\0
(NUL),%x09
插值到\t
(TAB),%x0a 插值到\n
(LF)。--format 不能与-s
、-o
、-k
、-t
、--resolve-undo
和--eol
结合使用。 - --
-
不再将任何参数解释为选项。
- <file>
-
要显示的文件。如果未给出任何文件,则显示与其他指定条件匹配的所有文件。
输出
git ls-files 仅输出文件名,除非指定 --stage
,在这种情况下它输出
[<tag> ]<mode> <object> <stage> <file>
git ls-files --eol 将显示 i/<eolinfo><SPACES>w/<eolinfo><SPACES>attr/<eolattr><SPACE*><TAB><file>
git ls-files --unmerged 和 git ls-files --stage 可用于检查关于未合并路径的详细信息。
对于未合并的路径,索引不会记录单个模式/SHA-1 对,而是记录多达三个这样的对;一个来自阶段 1 中的树 O,阶段 2 中的 A,以及阶段 3 中的 B。用户(或瓷器)可以使用此信息查看最终应在该路径上记录什么。(有关状态的更多信息,请参见 git-read-tree[1])
在没有 -z
选项的情况下,带有 "特殊" 字符的路径名将被引用,如配置变量 core.quotePath
所解释(参见 git-config[1])。使用 -z
,文件名将按原样输出,行以 NUL 字节结束。
可以使用 --format
选项以自定义格式打印,该选项能够使用 %(fieldname)
符号插值不同的字段。例如,如果您只关心 "objectname" 和 "path" 字段,可以使用特定的 "--format" 执行:
git ls-files --format='%(objectname) %(path)'
字段名
可以使用 --format=<format>
选项自定义显示每个路径的方式,其中索引条目各个方面的 <format> 字符串中的 %(fieldname) 将被插值。以下 "fieldname" 将被理解
- objectmode
-
记录在索引中的文件的模式。
- objecttype
-
记录在索引中的文件的对象类型。
- objectname
-
记录在索引中的文件的名称。
- objectsize[:padded]
-
记录在索引中的文件的对象大小(如果对象是
commit
或tree
,则为 "-")。它还支持使用 "%(objectsize:padded)" 的填充格式。 - stage
-
记录在索引中的文件的阶段。
- eolinfo:index
- eolinfo:worktree
-
索引中或工作树中路径内容的 <eolinfo>(参见
--eol
选项的描述)。 - eolattr
-
应用于路径的 <eolattr>(参见
--eol
选项的描述)。 - path
-
记录在索引中的文件的路径名。
排除模式
git ls-files 在遍历目录树并查找要显示的文件时,可以使用 "排除模式" 列表,前提是指定了 --others 或 --ignored 标志。gitignore[5] 指定了排除模式的格式。
这些排除模式可以按以下顺序从以下位置指定
-
命令行标志 --exclude=<pattern> 指定单个模式。模式的顺序与它们在命令行中出现的顺序相同。
-
命令行标志 --exclude-from=<file> 指定包含模式列表的文件。模式的顺序与它们在文件中出现的顺序相同。
-
命令行标志 --exclude-per-directory=<name> 指定 git ls-files 检查的每个目录中的文件名称,通常为
.gitignore
。更深目录中的文件优先。模式的顺序与它们在文件中出现的顺序相同。
使用 --exclude 在命令行上指定的模式或从使用 --exclude-from 指定的文件中读取的模式相对于目录树的顶层。从使用 --exclude-per-directory 指定的文件中读取的模式相对于该模式文件所在的目录。
通常,当您希望按与 Porcelain 命令相同的方式应用排除规则时,可以使用 --exclude-standard
。要模拟 --exclude-standard
指定的内容,可以给出 --exclude-per-directory=.gitignore
,然后指定
-
如果存在,则由
core.excludesfile
配置变量指定的文件,或$XDG_CONFIG_HOME/git/ignore
文件。 -
$GIT_DIR/info/exclude
文件。
通过 --exclude-from=
选项。
Git
是 git[1] 套件的一部分