前言
.gitignore 这个文件可以说是在git项目中几乎是必不可少的一个文件。
它主要做的事情就像它的名字一下,就是为了忽略某些文件。
因为很多时候,我们在开发项目的过程中,无法避免的会产生临时的文件,特别像前端项目中的node_modules这个文件夹。
如果不使用.gitignore去处理掉的话,每次提交都有可能会带上这个文件夹。那就是一个很糟心的事情。
现状
我们平时大部分时候,项目里自动就给你生成了,或者早已经有人帮你加好了。最多可能,有时候,因为做某个新功能,引入了一些不必要的文件及内容,需要去修改.gitignore。
绝大部分情况下,我们是很少去做改动的。或者压根就没有细心的看过。
我拿一个简单项目里的.gitignore作为例子:
node_modules/
tmp/
.DS_Store
*.log
简单解释一下:
忽略node_modules和tmp这个目录及其下的所有文件,忽略.DS_Store这个文件,忽略所有以.log结尾的文件。
那具体的 .gitignore 文件的格式规范是什么样的呢?
格式规范
格式规范如下:
- 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式匹配。
- 匹配模式如果最后跟的是反斜杠(/),说明要忽略的是目录。
- 要忽略指定模式以外的文件或目录,可以在模式的前面加上惊叹号(!)取反。
除了第2项外,其他三项都好理解。
那,具体的 glob 模式,指的是什么呢?
标准的glob模式定义
标准的glob模式,其实就是简化了的正则表达式。简化一点就是:
- 星号(*)匹配零个或多个任意的字符。
- [abc] 匹配任何一个列在方括号中的字符。
- 问号(?)只匹配一个任意的字符。
- 如果在方括号([])中使用短划线(-)表示所有在这两个字符范围内的都可以匹配。比如:[0-9]
需要注意的是
- *不会匹配/,所以,如果是
/src/*.txt
匹配的是/src/xxx.txt
。 - /xxx 代表的是 根项目的 xxx 文件。