简体中文 ▾ 主题 ▾ 最新版本 ▾ git-check-ignore 最后更新于 2.52.0

名称

git-check-ignore - 调试 gitignore / 排除文件

概要

git check-ignore [<options>] <pathname>…​
git check-ignore [<options>] --stdin

描述

对于通过命令行给出的每个路径名,或通过 --stdin 从文件提供的每个路径名,检查该文件是否被 .gitignore(或排除机制的其他输入文件)所排除。如果是,则输出该路径。

默认情况下,已跟踪的文件不会被显示,因为它们不受排除规则的约束;但请参阅 ‘--no-index’。

选项

-q
--quiet

不输出任何内容,仅设置退出状态。此选项仅在指定单个路径名时有效。

-v
--verbose

不直接打印被排除的路径,而是对于每个匹配排除模式的路径,同时打印排除模式和该路径。(匹配排除模式通常意味着路径被排除,但如果模式以 "!" 开头,则它是取反模式,匹配它意味着该路径不被排除。)

关于排除来源内部及来源之间的优先级规则,请参阅 gitignore[5]

--stdin

从标准输入读取路径名(每行一个),而不是从命令行读取。

-z

修改输出格式以适应机器解析(见下文)。如果同时提供了 --stdin,输入路径将以 NUL 字符而非换行符分隔。

-n
--non-matching

显示未匹配任何模式的给定路径。此选项仅在启用 --verbose 时才有意义,否则无法区分匹配模式的路径和未匹配模式的路径。

--no-index

在进行检查时不查看索引。这可用于调试路径为何被 git add . 等命令跟踪且未按用户预期被规则忽略,或者在开发包含取反逻辑的模式以匹配先前通过 git add -f 添加的路径时使用。

输出

默认情况下,任何匹配忽略模式的给定路径名都会被输出,每行一个。如果没有模式匹配给定路径,则该路径不会有任何输出;这意味着该路径不会被忽略。

如果指定了 --verbose,输出将是一系列如下格式的行:

<source> <冒号> <linenum> <冒号> <pattern> <制表符> <pathname>

<pathname> 是被查询文件的路径,<pattern> 是匹配的模式,<source> 是模式的源文件,<linenum> 是该模式在源文件中的行号。如果模式包含 "!" 前缀或 "/" 后缀,它将在输出中被保留。当指向由 core.excludesFile 配置的文件时,<source> 将是绝对路径;当指向 .git/info/exclude 或目录特定的排除文件时,将是相对于仓库根目录的路径。

如果指定了 -z,输出中的路径名将以空字符分隔;如果同时指定了 --verbose,则也会使用空字符代替冒号和硬制表符:

<source> <NULL> <linenum> <NULL> <pattern> <NULL> <pathname> <NULL>

如果指定了 -n--non-matching,未匹配的路径名也会被输出,此时输出记录中除了 <pathname> 以外的所有字段都将为空。这在非交互式运行时很有用,可以逐步将文件流式传输到长时间运行的 check-ignore 进程的 STDIN,对于每个文件,STDOUT 都会指示该文件是否匹配了模式。(如果没有此选项,将无法判断给定文件没有输出是因为它未匹配任何模式,还是因为输出尚未生成。)

缓冲行为遵循 git[1]GIT_FLUSH 选项下的记录。调用者有责任避免因过度填充输入缓冲区或从空输出缓冲区读取而导致的死锁。

退出状态

0

所提供路径中的一个或多个被忽略。

1

所提供的路径均未被忽略。

128

遇到了致命错误。

GIT

Git[1] 套件的一部分