#3514·ripgrep

[ignore] "whitelisted"/否定的模式即使在其他情况下被隐藏,也会包含在 ignore 文件中

作者: tmccombs创建于 2026年8月16日更新于 2026年9月6日

请选中此框以确认您已审阅以上内容 。

  • 我有一个不同的问题。

你在用哪一种叫"快活"的?

撕裂剂 15.2.0

特性: +pcre2 simd(编译):+SSE2,-SSSE3,-AVX2 simd(运行时间):+SSE2,+SSSE3,+AVX2

PCRE2 10.45 备有(JIT备有)

-你是怎么安装的?

派克曼( archlinux)

你在使用什么操作系统?

箭头linux

描述你的虫子。

如果.gitignore'(或.ignore'等)包含一个否定的图案(从"!"开始),那么与被搜索/被送回的文件列表中包含的相匹配的文件,即使它们因被隐藏而被排除在外.

男子网页确实包括以下 " 隐藏 " 内容:

请注意,如果隐藏文件或目录被白列在被忽略文件中,那么即使没有提供此旗帜,也会被搜索.

然而,我认为这种行为是出乎意料的,因为在.gitignore中否定一个模式的通常目的是确保一个本来不会被git跟踪的文件(因为它与另一个,更一般的,模式相匹配)仍然被跟踪,这并不一定是表示它应该包含在rg(或fd等)搜索的一组文件中,尽管被隐藏.

我理解这样做的动机,即这类文件很可能是用头来追踪的,而且对于某些重要的定义可能是重要的。 然而,一个与被否定的被忽略行相匹配的隐藏文件似乎不一致,因为否则它会被被一个被被被glob忽略的规则所忽略,但另一个被检查为git的被忽略文件不是. 除了有时, " 不隐藏 " 忽略了隐藏的文件。 从可用性角度看,似乎比起这个"白名单"的功能,最好有一个选项来包含所有被git跟踪的文件(包括隐藏的文件).

另见https://GitHub.com/sharkdp/fd/issues/1266。

通过使用-g'!.*'(或-E'.*'在fd)来绕过这一点是有可能的,但是这很尴尬,不明显,对窗口隐藏文件没有作用.

即使默认行为没有改变,在被忽略的箱子中是否还有选项,也许还有rg命令行可以"总是忽略隐藏文件,即使它们被"白列"吗?

复制行为的步骤是什么?

(单位:美元)
.a.b.b.git.gitignore(英语:.
猫猫.吉蒂格诺尔
吉提格诺
* *.b
{\fn华文楷体\fs16\1cHE0E0E0}我...
$r -- 文件
.吉提格诺尔
页:1
$ rg -- 无隐藏 -- 文件
.吉提格诺尔
页:1

什么是实际行为?

$r -- 文件
.吉提格诺尔
页:1

什么是预期的行为?

上面的例子,目录,不应该有输出.

更一般地说,除非使用 " -- -- 隐藏 " ,否则不应输出隐藏文件.

内容来源: BurntSushi/ripgrep