gitignore 忽略文件规则
一直比较困惑怎么样才能将一个项目里面所有存在的 node_moudle 文件给过滤掉,之前貌似 node_module/
是可以的,但是又感觉不对,要是在某一个子项目里面也有用到 npm install,然后装了 node_module 会不会被过滤掉呢?
今天看了文档才发现原来是这样用的:
/**/node_module
匹配了所有文件下面的 node_module 文件。
下面列出官方的规则:
- 空行匹配没有文件,是用来作为可读性的分隔符
- #开头是为注释,
\
反斜杠开头是识别为 hash - 末尾的空格将被忽略,除非用
\
反斜杠进行处理 - 可选的前缀
!
将会是否定模式,如果先前模式排除了任何匹配的文件将会再次被包括,如果排除了该文件的父目录,则无法重新包括该文件。git 不会出于性能原因列出排除的目录,无论他们在何处定义。对于以字面"!"开头的需要在第一个!
加上反斜杠\
。 - 如果模式以斜杠结尾,则它将仅找到的目录进行匹配,换句话说:
foo/
将匹配目录foo
和它下面的路径,但不匹配常规文件或者符号链接foo
等 - 如果匹配的文件不包括/,git 将视为
shell glob
模式,并检查与之相对的.gitignore 文件位置的路径名的匹配(相对于根目录) - 除此之外,
shell glob
中模式的通配符将不匹配路径中的/,只匹配一层,例如:Documentation/*.html
匹配Documentation/git.html
但是不会匹配Documentation/ppc/ppc.html
或者tools/perf/Docuementation/perf.html
- 前导斜杠与路径名开头匹配,例如:
/*.c
匹配cat-file.c
但是不匹配mozilla-sha1/sha1.c
另外,匹配模式中连续的两个 **
也有特殊意义
- 前导
**
后面跟一个斜杠标识在所有目录中匹配:**/foo
匹配任何地方的文件或者目录foo
,**/foo/bar
匹配任何地方的文件或路径中位于foo
目录下的bar
目录或文件 /**
匹配所有文件,abc/**
匹配abc
下所有文件(相对于.gitignore
目录下的无限深度)- 斜杠后跟两个连续星号,然后斜杠匹配 0 个或多个目录,
a/**/b
匹配a/b
,a/x/b
,a/x/y/b
等等 - 其他情况下的连续星号被视为无效
NOTES
gitignore 文件的目的是为了确保没有被 Git 跟踪的某些目录保持未跟踪状态。要停止跟踪当前跟踪文件,请使用 git rm --canched
相关链接
gitignore 官方 documentation
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 移动端使用 rem 原理
下一篇: 压缩和增强手写笔记
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论