Skip to content

git-check-ignore

命令名称 - 调试 gitignore / exclude 文件

概要

bash
[verse]
'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> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

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

如果指定了 -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 - 遇到致命错误。

另请参阅

gitignore(5)git-config(1)git-ls-files(1)

Git

git(1) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布