现有目录构造如下
├── public
│── x1
│ │── file1
│ └── file2
│── x2
│ │── file3
│ └── file4
└── thumb
│── file5
└── file6
想要疏忽 x1,x2 目录及全副文件,疏忽 thumb 目录下的文件保留 thumb 目录构造。
创立 public/.gitignore 文件,语义为“疏忽 当前目录下的全副文件和目录,但不疏忽 thumb 目录”。
# public/.gitignore
# 疏忽
*
# 不疏忽
!.gitignore
!thumb/
然而,这样不能满足咱们的要求,尽管疏忽了 x1-xn 的目录及其下文件,保留了 thumb 目录,但 thumb 目录下的文件也被保留下来,咱们要的是只保留 thumb 目录构造。
再创立 public/thumb/.gitignore 文件,进行解决。语义为“疏忽当前目录的所有文件,但不疏忽 .gitignore 文件”。
# public/thumb/.gitignore
*
!.gitignore
能够看到 public/.gitignore 文件和 public/thumb/.gitignore 文件对于 thumb 目录的疏忽规定是由抵触的。因为当前目录的规定优先级高于父级目录定义的规定,所以提交 git 后,thumb 目录下仅存在 .gitignore 文件,thumb 目录将得以保留。
若没有 !.gitignore
这条规定,thumb 目录下的所有内容,将全副被疏忽,目录下没有内容,提交 git 后,目录不会被提交。