[Git] gitignore

官方文档
github gitignore 模板文件
生成 gitignore 模板文件的网站

基本介绍

gitignore 用来描述如何忽略那些不想让 git 追踪的文件的规则。如果文件已被 git 追踪,那么即使符合 gitignore 中的规则,文件也不会被忽略。gitignore 文件的每一行指定了一条对应规则,Git 会根据优先级从不同的文件源获取 gitignore 忽略规则,优先级由高到低分别是:

  1. git ls-filesgit read-tree等命令会从参数选项中读取 gitignore 的内容。
  2. 而像git statusgit add等命令则是通过 .gitignore 文件来获取忽略规则。一个项目的每一级目录都可以包含 .gitignore 文件,检查一个文件是否应该被忽略就是根据其所在目录的 .gitignore 文件或其上级目录的 .gitignore 文件中的忽略规则。而多个 .gitignore 文件中的优先级是所在目录中的最高,然后依次向上层递减。跟项目相关的并且希望被克隆时也应包含的规则都应该写在 .gitignore 文件里。
  3. 如果只是本地项目单独应用的规则,可以写在 .git/info/exclude 文件中。
  4. 如果用户希望系统中所有的git管理的项目都应用的规则,可以通过 git config --global core.excludesfile '' 命令设置一个系统全局的过滤文件。

过滤规则语法

  1. 空行不匹配任何文件,可用作分割线,增强可读性。
  2. 以 # 开头作为注释。
  3. 末尾的空格会被忽略,除非通过 \ 转义。
  4. 通过 !开头作取反操作,即如果之前的规则将文件忽略,这条规则可以让文件重新被追踪,因为性能的考虑,如果之前的规则使文件所在的目录整体被忽略,那么无法使文件重新被追踪了。
  5. 最后加反斜线 /,只匹配目录和其下面的文件,不匹配该名称的文件。 如foo/ 不匹配foo文件。
  6. 如果模式中没有反斜线 /,则作为shell glob 模式并且相对于.gitignore文件所在的目录位置。所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 * 匹配零个或多个任意字符,[abc] 匹配任何一个列在方括号中的字符,? 只匹配一个任意字符,[0-9] 表示所有在这两个字符范围内的都可以匹配。
  7. 以 / 开头只匹配当前一级目录,比如 "/*.c" 匹配 "cat-file.c",但不匹配 "mozilla-sha1/sha1.c"。
  8. 两个连续的星号 **,匹配所有的路径。

其他

停止已被跟踪的文件,可以使用 git rm --cached

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容