美文网首页
[Git] gitignore

[Git] gitignore

作者: 水止云起 | 来源:发表于2016-08-10 18:48 被阅读151次

    官方文档
    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

    相关文章

      网友评论

          本文标题:[Git] gitignore

          本文链接:https://www.haomeiwen.com/subject/mjxjsttx.html