gitignore保留特定后缀的文件,包括子文件夹中的

我希望在一个文件夹中只追踪.cfg文件,无论它是在根目录还是子目录。

我们知道gitignore规则的一种写法是:

*
!*.txt

这样代表忽略所有文件,但是不忽略txt文件,但是这样实操发现,只有根目录的txt会被追踪,子目录的还是会被忽略。

首先要介绍一条git的规则:

  1. 如果一个文件的父文件夹已经被忽略,那么这个文件无法被重新包含
    这句话的英文是

It is not possible to re-include a file if a parent directory of that file is excluded.

我的例子是在一个文件夹中有多层子文件夹,子文件夹中可能会有.cfg文件,我要追踪所有.cfg文件,排除剩下的所有文件。

# 忽略所有文件
*
# 但是不要忽略文件夹和子文件夹
!/**/
# 不要忽略所有cfg文件
!*.cfg

这样,在包含所有cfg文件之前,先恢复所有子目录,这样子目录下的cfg文件就可以恢复。

posted @ 2021-11-30 17:35  王冰冰  阅读(1230)  评论(0编辑  收藏  举报