官方文档
github gitignore 模板文件
生成 gitignore 模板文件的网站
基本介绍
gitignore 用来描述如何忽略那些不想让 git 追踪的文件的规则。如果文件已被 git 追踪,那么即使符合 gitignore 中的规则,文件也不会被忽略。gitignore 文件的每一行指定了一条对应规则,Git 会根据优先级从不同的文件源获取 gitignore 忽略规则,优先级由高到低分别是:
- 像
git ls-files
,git read-tree
等命令会从参数选项中读取 gitignore 的内容。 - 而像
git status
,git add
等命令则是通过 .gitignore 文件来获取忽略规则。一个项目的每一级目录都可以包含 .gitignore 文件,检查一个文件是否应该被忽略就是根据其所在目录的 .gitignore 文件或其上级目录的 .gitignore 文件中的忽略规则。而多个 .gitignore 文件中的优先级是所在目录中的最高,然后依次向上层递减。跟项目相关的并且希望被克隆时也应包含的规则都应该写在 .gitignore 文件里。 - 如果只是本地项目单独应用的规则,可以写在 .git/info/exclude 文件中。
- 如果用户希望系统中所有的git管理的项目都应用的规则,可以通过
git config --global core.excludesfile ''
命令设置一个系统全局的过滤文件。
过滤规则语法
- 空行不匹配任何文件,可用作分割线,增强可读性。
- 以 # 开头作为注释。
- 末尾的空格会被忽略,除非通过 \ 转义。
- 通过 !开头作取反操作,即如果之前的规则将文件忽略,这条规则可以让文件重新被追踪,因为性能的考虑,如果之前的规则使文件所在的目录整体被忽略,那么无法使文件重新被追踪了。
- 最后加反斜线 /,只匹配目录和其下面的文件,不匹配该名称的文件。 如foo/ 不匹配foo文件。
- 如果模式中没有反斜线 /,则作为shell glob 模式并且相对于.gitignore文件所在的目录位置。所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 * 匹配零个或多个任意字符,[abc] 匹配任何一个列在方括号中的字符,? 只匹配一个任意字符,[0-9] 表示所有在这两个字符范围内的都可以匹配。
- 以 / 开头只匹配当前一级目录,比如 "/*.c" 匹配 "cat-file.c",但不匹配 "mozilla-sha1/sha1.c"。
- 两个连续的星号 **,匹配所有的路径。
其他
停止已被跟踪的文件,可以使用 git rm --cached
网友评论