git check-ignore

优质
小牛编辑
119浏览
2023-12-01

命名

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

概要

git check-ignore [options] pathname…
git check-ignore [options] --stdin

描述

对于通过命令行或文件via给出的每个路径名--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> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

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

如果-z指定,则输出中的路径名由空字符分隔; 如果--verbose也被指定,则也使用空字符而不是冒号和硬标签:

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

如果-n或者--non-matching被指定,则也会输出不匹配的路径名,在这种情况下,每个输出记录中除<pathname>之外的所有字段都将为空。这在非交互式运行时非常有用,因此文件可以增量流式传输到长时间运行的检查忽略进程的STDIN,并且对于其中的每个文件,STDOUT都会指示该文件是否匹配模式。(如果没有这个选项,就不可能判断给定文件的输出缺失是否意味着它不匹配任何模式,或者输出还没有生成。)

缓冲发生GIT_FLUSH在git [1]中的选项下。调用者负责避免溢出输入缓冲区或从空输出缓冲区读取引起的死锁。

退出状态

0

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

1

没有提供的路径被忽略。

128

遇到致命错误。