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 后,目录不会被提交。

git
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!