gitignore 将排除项传播到较低级别的目录中

gitignore propagating exlusions to lower levels into directories

我有一个 gitignore

*
!.*

我希望看到 .* 的所有子目录,但实际上 git 只看到子目录再次以 . 开头的子目录。例如,我看到 .java/.userPrerfs/.user.lock..,因为两个子目录都以 . 开头,但我没有看到 .conf/ario.java/fonts/.

如何限制排除*只适用于顶级?

您想要包含与 .gitignore 文件处于同一级别的路径

!./.*

!.* 因为你没有 "map" 目录它不适合你。

. 代表当前目录,因此您只忽略指定目录中的文件。

使用这个:

*
!**/.*

我做了进一步的实验,发现对于更复杂的需求,

/*
!/.*
/.*/*
!/.config/*
/.config/*/*
!/.config/*/*.conf

可以让我在 .config 目录中找到 .conf 文件。

我找到解决方案的方法是逐行编写,并针对每一行测试包含的内容和不包含的内容。似乎 / 可用于当前目录(或 ~)。也许有一个解释。

我很欣赏帮助我理解 .gitignore 处理的两个建议。