文章目录
- [1. 简介](#1. 简介)
- [2. 格式](#2. 格式)
- [3. 参考](#3. 参考)
-
- [1. 文件名](#1. 文件名)
- [2. *.后缀](#2. *.后缀)
- [3. ?.后缀](#3. ?.后缀)
- [4. []](#4. [])
- [5. \](#5. )
- [6. **](#6. **)
- [7. /](#7. /)
- [8. !](#8. !)
1. 简介
.gitignore是一个用于指定Git版本控制系统忽略特定文件或文件夹的配置文件。当我们在项目中添加文件并想要将它们纳入到版本控制中时,有时我们也会有一些不希望纳入版本控制的文件,比如编译生成的文件、日志文件、配置文件、临时文件等。这种情况下,我们可以在项目根目录下创建一个名为.gitignore的文件,列出需要忽略的文件和文件夹的规则,Git会根据这些规则来判断哪些文件应该忽略。
2. 格式
bash
匹配文件名
bash
* : 匹配0或多个字符
? : 匹配1个字符
[] : 匹配列表
\ : 转义字符
匹配文件夹:
bash
** : 匹配多级目录,0或多级目录
其他:
bash
/ : 只匹配根目录下文件或者文件夹
空格 : 不影响,分隔段落而已
# : 注释
! : 排除后的文件,被再次显示可被跟踪
remark:
- 可以组合使用的,有些是用于控制文件夹,有些是用于控制文件
如/*.log 忽略根目录下所有a.log b.log c.log文件
如/a[bcd].log 忽略根目录下ab.log ac.log ad.log 文件
3. 参考
测试用的工程结构
bash
.
├── a
│ ├── a
│ │ ├── a
│ │ │ └── a.log
│ │ └── b
│ │ ├── ab.log
│ │ ├── ac.log
│ │ ├── a.log
│ │ └── b.log
│ └── b
├── ab.log
├── ac.log
├── a.log
├── b
│ └── log
└── b.log
1. 文件名
bash
a.log : 匹配所有目录下的所有a.log文件
bash
a.log
a/a/a/a/a.log
2. *.后缀
bash
*.log : 匹配所有目录下的所有*.log文件
bash
a.log
b.log
a/a/a/b/a.log
a/a/a/b/b.log
...
3. ?.后缀
bash
?.log : 匹配所有目录,只匹配文件名单个字符文件
bash
匹配:
a.log
b.log
a/a/b/a.log
a/a/b/b.log
不匹配:
ab.log
ac.log
a/a/b/ab.log
a/a/b/ac.log
4. []
bash
a[bc].log : 匹配所有目录,只匹配文件名ab.log ac.log文件
bash
匹配:
ab.log
ac.log
a/a/b/ab.log
a/a/b/ac.log
不匹配:
a.log
b.log
a/a/b/a.log
a/a/b/b.log
5. \
bash
a\!c : 转义字符
bash
匹配:a!c
6. **
bash
**/a.log : 匹配多级目录下的a.log文件,一般会限定文件夹,如下:
/a/**/a.log : 这样可以确保是在/a/目录下,匹配所有a.log
bash
**/a.log : 匹配结果同 a.log,匹配所有文件夹下的a.log
/a/**/a.log : 只匹配/a/文件夹下的所有a.log,会递归查找
匹配:
a/a/a/a.log
a/a/b/a.log
不匹配:
a.log
7. /
bash
/a.log : 只匹配根目录下文件
bash
只匹配:
a.log
不匹配:
a/a/a/a.log
a/a/b/a.log
...
8. !
- 若已经被排除了,可以使用!再次将文件显示,用于跟踪
- 假设我们需要跟踪/a/a/b/a.log, 而不跟踪a/a/b/目录下的其他文件,
上图中,/a/a/b/目录下所有文件都被忽略了,即无法git status 无法显示/a/a/b/a.log文件
添加一行,排除/a/a/b/a.log文件
- 注意点
3.1 如果匹配了/a/a/b/a.log文件所属的父文件夹,即/a/a/b/文件夹,则使用!不会再生效。