此篇为番外,未收入在本篇是因为 Ignore 并不是个工具,而是个会常被各种工具采用的一种配置方式。
Ignore 档案用来排除匹配的档案。
Ignore 档案使用特定格式与通用字元来排除不想被特定工具处理的档案或目录。
以 git 的 .gitignore
为例,只要符合 ignore 档案的设定,就会被 git 视为不用追踪的档案:
# Ignore any js file in directory `sample` with any depth
samples/**/*.js
如果在当前目录中有个 .gitignore
的内容如上,那当前目录内的 samples
目录里的任何阶层目录中以 .js
结为的档案或目录都会被排除在 git 的追踪清单内。
每个工具在规定 ignore 档案的规则时或多或少都有点不同,但主要都以 .gitignore
的规则处理,因此这里会说明 .gitignore
的规则,使我们对於 ignore 档案的规则有个认识。
规则列表如下:
#
作为行开头视为注解行,如果需要包含以 #
开头的档案或目录,可以使用 \
跳脱。例如: \#foo
会匹配 #foo
目录或档案。\
表示不忽略。例如: f\ o\ o
会匹配 f o o
目录或档案。!
作为行开头会被视为不要忽略的档案或目录,如果要忽略以 !
开头的档案或目录,需要以 \
跳脱。例如: !.gitignore
会将 .gitignore
档案或目录排除在忽略清单中,另外像是 \!important!.txt
则会将 !important!.txt
包含在忽略清单中。/
作为目录区隔符号。
/
,则会只会搜寻与 .gitignore
同层的目录。例如: /foo
会对应 foo
,但不会对应 a/foo
,另外 foo/bar
会对应 foo/bar
但不会对应 a/foo/bar
。/
则会寻找任意层的目录,不会寻找档案。例如 foo/
只会搜寻目录 foo
不会包含档案 foo
。*
与除了 /
外的所有字串相符。例如 *.js
会符合任意以 .js
结尾的档案或目录,另外 foo/*
会匹配目录 foo
中所有的档案及目录。?
与除了 /
外的所有字元相符。例如 ?.js
符合 a.js
但不符合 sample.js
。[a-zA-z]
是范围符号,与范围设定的相符。例如 [a-c].js
符合 b.js
但不符合 d.js
。**
依照摆放位置有不同的效果:
**
後接着 /
表示任意层目录。例如 **/foo
符合 foo
与 a/foo
。/
後接着 **
并且位於尾端,表示此目录下的所有档案及目录。例如 foo/**
会包含 foo
中所有的档案及目录,但不会包含 a/foo
的内容。/
之间摆放 **
表示中间夹着零至多个目录。例如 foo/**/sample.js
符合 foo/sample.js
、 foo/bar/sample.js
与 foo/bar/a/sample.js
。*
相连都依上列规则。/
则会找寻所有层级目录中是否有符合的档案及目录。例如: foo
会符合 /foo
与 a/foo
。.gitignore
规格,因此理解了 .gitignore
写法,就可以知道大部分的 ignore 档案设定方式。
<<: Day31 - 【概念篇】Open-ID Connect & Social Login(2)
>>: Java 开发 WEB 的好平台 -- Grails -- (1) 认识/安装 Grails
Zigzag Conversion Medium The string "PAYPALI...
所谓的程序码签章,就是一个指一个数位的签章,在编译好的软件上签章。软件一旦被重新编译、修改,上面的签...
人员终於跨入两位数,虽然只是个不明显的里程碑; 但也准备从「求生存」往「求发展」的路程前进。 这时候...
特徵选择是机器学习中的核心概念之一,不相关或部分相关的特徵会对模型性能产生负面影响,也会有效能的问题...
1.computed & Watch Part_1 > Lab_Binding >...