gitignore保留特定后缀的文件,包括子文件夹中的
我希望在一个文件夹中只追踪.cfg
文件,无论它是在根目录还是子目录。
我们知道gitignore规则的一种写法是:
*
!*.txt
这样代表忽略所有文件,但是不忽略txt文件,但是这样实操发现,只有根目录的txt会被追踪,子目录的还是会被忽略。
首先要介绍一条git的规则:
- 如果一个文件的父文件夹已经被忽略,那么这个文件无法被重新包含
这句话的英文是
It is not possible to re-include a file if a parent directory of that file is excluded.
我的例子是在一个文件夹中有多层子文件夹,子文件夹中可能会有.cfg
文件,我要追踪所有.cfg
文件,排除剩下的所有文件。
# 忽略所有文件
*
# 但是不要忽略文件夹和子文件夹
!/**/
# 不要忽略所有cfg文件
!*.cfg
这样,在包含所有cfg文件之前,先恢复所有子目录,这样子目录下的cfg文件就可以恢复。