gitignore妙用

目录

使用Git的同学都知道.gitignore 配置文件用于配置不需要加入版本管理的文件,对版本管理带来很大的便利。今天有个需求就是忽略版本库下除少数几个文件和文件夹之外的所有文件,首先想到的方式是使用gitignore树的概念,即在需要的文件夹下都添加.gitignore文件,并在其中设定相应的规则。但是,这种方式比较麻烦。

好好研究了一下gitignore的语法,知道了.gitignore文件过滤有两种模式:开放模式和保守模式。

  1. 开放模式负责设置过滤哪些文件和文件夹

    例如:

    /target/ 表示项目根目录下的target文件夹里面所有的内容都会被过滤,不被跟踪
    .classpath 表示项目根目录下的.classpath文件会被过滤,不被跟踪

  2. 保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪

    例如:

    !/target/*.h 表示target文件夹目录下所有的.h文件将被跟踪

还有就是,gitignore是从上到下逐行匹配的,因此.gitignore文件的编写原则就是:

先编写开放模式,在编写保守模式

要不然,开放模式的规则会把保守模式的规则给覆盖了。

下面附上我的.gitignore文件的示例:

1
2
3
/*
!.gitignore
!/posts/

只跟踪版本库中的.gitignore文件和posts目录。这里需要注意的是:

一定是/*而不是*/*表示当前目录下的所有文件,而不是所有文件*;(这是我自己的理解,不知道对不对!)

下面附上gitignore的简单语法:

以斜杠“/”开头表目录

以星号“*”通配多字符

以问号“?”通配单字符

以方括号“[]”包含单个字符的匹列表

以叹号“!”对匹配结果反

评论