关于gitignore:Git中的白名单和子目录

Whitelisting and subdirectories in Git

我已经为文本文件创建了白名单。

1
2
*
!*.txt

现在,我在子目录-sub/dir/file.txt中有一个未跟踪的文本文件,并且未显示(被忽略)。 但是,显示了根目录中的文本文件。

为什么会这样,我该如何解决?


如果以这种方式尝试,它将失败,因为您最终会将结构中的目录列入黑名单。

要解决此问题,您希望将所有不是目录的内容也不是要提交的文件类型之一列入黑名单,同时又不将目录列入黑名单。

.gitignore文件将执行此操作:

1
2
3
4
5
6
7
8
# First, ignore everything
*
# Now, whitelist anything that's a directory
!*/
# And all the file types you're interested in.
!*.one
!*.two
!*.etc

使用位于资源库根目录中的.gitignore*.one*.two*.three文件存在的情况下,针对.txt文件在三级结构白名单中对此进行了测试-适用于我。 您无需将.gitignore文件添加到结构中的所有目录中。

我用来弄清楚答案的信息尤其来自于此(stackoverflow.com)。