Git忽略文件
在项目根目录下创建 .gitignore 文件,在其中列出待匹配文件的模式。
示例1
*.[oa]
就是告诉 git 忽略所有以 .o 或 .a 结尾的文件
示例2
*~
是告诉 git 忽略所有以波浪号(~)结尾的文件,Emacs 等许多文本编辑器都会以这种文件作为临时文件。
可以写入 .gitignore 文件中的匹配模式规则如下:
- 空行或者以#开始的行会被忽略
- 支持标准的glob模式
- 以斜杠(/)开头的模式可用于禁止递归匹配
- 以斜杠(/)结尾的模式表示目录
- 以感叹号(!)开始的模式表示取反
glob模式类似于 shell 所使用的简化版正则表达式。具体来讲:
- 星号(*)匹配零个或更多字符
- [abc]匹配方括号内的任意单个字符(在这个例子里是a、b、c)
- 而问号(?)则匹配任意单个字符
- 在方括号中使用短横线分隔两个字符(例如[0-9])的模式能够匹配在这两个字符范围内的任何单个字符(在这个例子里是0到9之间的任何数字)
- 还可以用两个星号匹配嵌套目录,比如 /a**/z 能够匹配 a/z、a/b/z 和 a/b/c/z 等
更多例子
*.a #忽略 .a 类型的文件
!lib.a #仍然跟踪 lib.a,即使上一行指令要忽略 .a 类型的文件
/TODO #只忽略当前目录的 TODO 文件,而不忽略子目录下的 TODO
build/ #忽略 build/ 目录下的所有文件
doc/*.txt #忽略 doc/notes.txt,而不忽略 doc/server/arch.txt
doc/**/*.pdf #忽略 doc/目录下的所有 .pdf 文件