# gitignore 文件格式参考
在使用Git进行版本控制的时候,我们有时候需要将一些文件或者目录从版本控制中排除,比如编译生成的中间文件、日志文件、缓存文件等等。这就需要使用到Git的.gitignore文件了。
.gitignore文件是Git用来记录哪些文件不需要进行版本控制的配置文件,在项目根目录下创建一个.gitignore文件即可。.gitignore文件中包含了需要过滤的文件、目录的规则,其规则语法和正则表达式有些类似。
以下是.gitignore的一些常见规则:
#
注释符号,用于注释一行内容。/path/
表示忽略根目录下的path目录。*.txt
表示忽略所有txt文件。!/path/include.txt
表示不忽略根目录下的/path/include.txt文件。*.[oa]
表示忽略所有以.o和.a结尾的文件。/path/**/*.log
表示忽略/path目录下的所有子目录中的.log文件。
需要注意的是,Git的过滤规则是遵循“最小化原则”的,也就是说它会尽可能地忽略最少的文件,同时也会尽可能地匹配最多的文件。如果一个文件不符合忽略规则,那么它就会被纳入版本控制。因此在编写.gitignore过滤规则时,应该尽可能地准确和详细,确保不会误过滤或漏过滤。
# 例子
#注释 .gitignore的注释
*.txt 忽略所有 .txt 后缀的文件
!src.a 忽略除 src.a 外的其他文件
/todo 仅忽略项目根目录下的 todo 文件,不包括 src/todo
build/ 忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt 忽略doc目录下所有 .txt 后缀的文件,但不包括doc子目录的 .txt 的文件
bin/: 忽略当前路径下的 bin 文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 忽略根目录下的 bin 文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh 不忽略bin目录下的run.sh文件
*.log: 忽略所有 .log 文件
config.js: 忽略当前路径的 config.js 文件
/mtk/ 忽略整个文件夹
*.zip 忽略所有.zip文件
/mtk/do.c 忽略某个具体文件