By francis_hao Nov 19,2016
注:此条所有内容均来自$ git help gitignore,细节请参考之
有时候在仓库里有一些文件我们并不想提交,git提供了指定屏蔽文件的功能
可以在$GIT_DIR/info/exclude(和/或).gitignore文件中添加不想被追踪的文件,但如果文件之前已经被提交过,已经被git追踪了的话,再设置屏蔽文件就不会起作用了。
此功能实现的过程如下
- 从.gitignore文件中读取模式
- 从$GIT_DIR/info/exclude中读取模式
- 从配置变量core.excludesfile指定的文件中读取模式
这三个文件分别对应不同的应用场景:
"1" 本身也可以提交到版本库中由git控制版本,并可以在别人clone的仓库中生效。
"2"是用于比较私人的仅仅对于本仓库生效。
"3"也是用于私人的但是会对所有的仓库生效
模式匹配的格式:
- 空行不起作用,因此在方便阅读的目的下可任意使用
- #作为注释
- !可以将之前的规则否决掉,这个在最后面的有效性越高
- 以/结尾的模式仅仅匹配目录,不会对文件有影响,例如"foo/"仅匹配目录foo(不管它在几层目录下),而不会匹配文件foo
- 没有/的情况,如果是.gitignore里的规则,则以.gitignore所在路径作为根路径,其他文件里的规则则以$GIT_DIR所在路径作为根路径的整个文件路径名内容作为匹配内容,例如规则为dir,则它会匹配dir/hello,dir/haha,info/jack/dir等
- 模式"*"号默认不会匹配/,例如a/*.c会匹配a/a.c但是不会匹配 a/b/a.c。
- 行首的/表示gitignore所涉及的路径,例如"/*.c"会匹配"cat_file.c"但不会匹配"Mozilla_sha1/sha1.c"
NOTE:
本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 * 许可协议进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/6081448.html
参考
[1] git help gitignore