在工程根目录下建立.gitignore文件,将要排除的文件或文件夹写到.gitignore这个文件中。这种方式会让这个工程的所有修改者在克隆代码的同时,也能克隆到过滤规则,而不用自己再写一份,这就能保证所有修改者应用的都是同一份规则,而不是张三自己有一套过滤规则,李四又使用另一套过滤规则,个人比较喜欢这个方式。.gitignore文件的规则如下:
规则说明:
一、配置语法:
- (#) 表示注释
(*)表示通配多个字符;
*.html(忽略所有生成的 html文件)
- (?)通配单个字符;
([abc]) 代表可选字符范围
*.py[cod](忽略所有.pyc,.pyo和 .pyd的文件)
- (!)表示不忽略(跟踪)匹配到的文件或目录;
以斜杠“/”结尾表示目录:
TODO:忽略工程中所有名为TODO文件和名为TODO目录 TODO/:只忽略工程中名为TODO目录,不忽略名为TODO文件 TODO , !TODO/ :只忽略工程中名为TODO文件,不忽略名为TODO文件夹
二、注意事项:
如果名称最前面是路径分隔符(/) (如:/TODO),表示仅仅忽略项目根目录下的文件和文件夹/TODO,不包括子文件夹 subdir/TODO
如果名称最前面无路径分隔符 (/)(如:TODO),表示忽略项目所有目录下的文件和文件夹/TODO,也就是包括subdir/TODO
如:
TODO:忽略工程中所有名为TODO文件和名为TODO文件夹
TODO/=TODO/*:只忽略工程中所有名为TODO文件夹,但不忽略名为TODO文件(注意,不管是根目录下的 /TODO/ 文件夹,还是某个子目录下的文件夹 subdir/TODO,都会被忽略;)
/TODO/=/TODO/*:只忽略项目根目录下的 /TODO/文件夹,不包括子文件夹和名为TODO的文件
*.a , !lib.a :忽略所有 .a 结尾的文件,但 lib.a 除外
build/ :忽略 build/ 目录下的所有文件
doc/*.a:会忽略 doc/notes.a, 但不包括 doc/server/arch.a