gitignore 忽略目录下文件仅保留目录形态
现有目录结构如下
├── 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 后,目录不会被提交。