## 命名

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

遇到致命错误。