gitignore 忽略文件规则

发布于 2024-12-11 22:46:14 字数 1913 浏览 3 评论 0

一直比较困惑怎么样才能将一个项目里面所有存在的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

晒暮凉

暂无简介

0 文章
0 评论
25 人气
更多

推荐作者

杨绘峰

文章 0 评论 0

听闻余生

文章 0 评论 0

谜兔

文章 0 评论 0

xiaotwins

文章 0 评论 0

你说

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文