Git 忽略某个目录中的文件,同时保留这个目录

时间:2021-06-13 19:05:27

类似的一个问题是项目根目录下可能有 logs 一类的目录,

我们希望他人把仓库 clone 下来的时候能够已经携带了这个目录,

但又不希望让这个目录中的日志文件进版本库。

之前看到一些项目用了一种比较 ugly 的做法:

在 logs 下建立一个 .gitkeep 空文件(git 无法版本控制没有任何文件的空目录),

然后再在项目根目录 .gitignore 中写入一行 

logs/*

其实完全没有这样的必要,我们可以直接在 logs 里面写一个 .gitignore 文件,内容如下:

 *
 !.gitignore

然后 

git add logs/.gitignore

git commit 

提交。

这个 .gitignore 既留住了空目录,又声明了忽略。

而且某天如果要删除 logs 目录,直接 git rm -r logs 即可,

无需再修改项目根目录下的 .gitignore 。