git会忽略任何位置的文件,但忽略其中的一种文件

时间:2018-10-03 14:41:43

标签: git ignore

我的目标是编写一个.gitignore文件,该文件将忽略向下任何级别的所有内容,除了:

*.xxx
*.yyy

在当前目录(.gitignore所在的位置)和

*.xxx

下面树中任何位置的任何地方。

换句话说,我想将git *.xxx保持在任何级别,并将*.yyy保持在'root'级别。其他什么都应该忽略。

子文件夹的名称未知,因此我无法在gitignore文件中引用它们。

我尝试了许多替代方法,但到目前为止都没有成功: 例如:

#ignore everything in any subdirectory
*
*/**
#expect some files:
!*.yyy
!*/**/*.xxx

我认为我正在达到限制:

  

“如果文件的父目录不能重新包含该文件   文件被排除”

git忽略文档...是否有解决此问题的方法??

1 个答案:

答案 0 :(得分:3)

问题确实在于,首先在所有子目录中将其列入黑名单,然后再尝试将这些目录中的某些内容重新包括在内。

解决方案是在尝试重新包含文件之前,再次将子目录列入白名单:

# blacklist everything
*

# whitelist all content ending with slash (directories)
!/**/

# finally whitelist all files with valid extension in the entire repo
!*.xxx
!*.yyy
# ignoring the ones that are only allowed within the repo root
*/**/*.yyy
相关问题