git ignore规则

Git忽略规则 .gitignore 配置梳理

常用规则

  1. /dir/ 过滤整个文件夹
  2. *.zip 过滤所有后缀名为.zip文件
  3. /dir/file.txt 过滤某个具体文件

以上是要过滤掉文件文件夹,要添加到对应的文件,前面加个英文感叹号 ! 即可。

  1. !*.zip
  2. !/dir/file.txt

为什么要有这两种过滤、添加的规则,比如我们想 过滤一个 /dir1/ 目录,但是要添加/dir1/file1.txt 文件到版本管理中,以上的两个正好用到了:

  1. /dir1/
  2. !/dir1/file1.txt

如果只有过滤规则,而没有添加规则,那就只能把 /dir1/中的其他文件一个一个的写出来了。

如果在创建 .gitignore 文件之前就push了项目,那么即使在 .gitignore 文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。出现这种问题的原因就是Git已经开始管理这些文件了,所以无法再通过过滤规则过滤它们。因此一定要养成在项目开始就创建 .gitignore 文件的习惯,否则一旦push,处理起来会非常麻烦。

具体配置

配置语法

  • 以斜杠“/”开头表示目录
  • 以星号“*”通配多个字符
  • 以问号“?”通配单个字符
  • 以方括号“[]”包含单个字符的匹配列表
  • 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录

此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。

配置实例

  1. fd1/* 忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;

  2. /fd1/* 忽略根目录下的 /fd1/ 目录的全部内容;

  3. /*
    !.gitignore
    !/fd1/child1/
    !/fd2/child2/

    忽略全部内容,但是不忽略 .gitignore 文件、根目录下的/fd1/child1/ 和 /fd2/child2/ 目录;

最后,再需要提醒下, .gitignore 该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
如果文件曾经被 Git 记录过,那么.gitignore 就对它们完全无效。

哎呀,被你看光了