gitignore语法

5,310 阅读2分钟

字数:513

阅读时间:5分钟

github官方提供了一个全面的gitignore模板,基本上能满足我们的需求。

地址入口:github.com/github/giti…

不过有许多库其实也是使用的相同语法来忽略文件的,例如eslint。所以咱还是有必要详细了解一下。

规则详情

gitignore其实就是在glob匹配的基础上添加了路径匹配和!#语法。

先上代码:

#先忽略当前目录下所有文件
/*
!*-ui
dist
forms
libs
dll

如上所示,每一行配置都是一条独立的匹配语句,遵循如下规则:

1.#开始表注释。

2.!开始表取消忽略。例,!*-ui就是重新匹配当前目录下的以‘-ui’结尾的文件夹。这里需要注意,如果父级目录被忽略了,子集目录是无法取消忽略的。例:

*-ui
!jquery-ui/jquery.js

是无法重新匹配jquery.js文件的。正确写法:

*-ui
!jquery-ui
jquery-ui/*
!!jquery-ui/jquery.js

3.空行不做任何匹配

4.如果匹配语句中没有’\‘符号,则视为一个glob匹配。

glob匹配是shell使用的简化版正则表达式,只使用了正则里面的*?[]语法。例:foo可以匹配到 ’foo‘、’app/foo‘、’app/food.js‘等。

5.如果表达式中存在''符号,就是路径匹配语法。例:foo/只会匹配’foo‘、’app/foo‘,不会匹配’app/food.js‘。而foo/*.js只会匹配foo文件夹中所有的js文件

6.以\开始,表匹配当前目录。例:/*.js可以匹配'app.js',但无法匹配'js/app.js'。

7.**表示匹配零到多级目录。

例:

**/foofoo

abc/**匹配abc本身以及其所有子文件夹、子文件夹的子文件夹(无限深度)和其中文件。

abc/**/d匹配’abc/d‘、’abc/e/d‘、’abc/e/f/d‘、’e/abc/f/d‘等。

参考资料:git-scm.com/docs/gitign…

欢迎关注我的微信公众号: