字数:513
阅读时间:5分钟
github官方提供了一个全面的gitignore模板,基本上能满足我们的需求。
不过有许多库其实也是使用的相同语法来忽略文件的,例如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.**
表示匹配零到多级目录。
例:
**/foo
同foo
。
abc/**
匹配abc本身以及其所有子文件夹、子文件夹的子文件夹(无限深度)和其中文件。
abc/**/d
匹配’abc/d‘、’abc/e/d‘、’abc/e/f/d‘、’e/abc/f/d‘等。
欢迎关注我的微信公众号: