.gitignore文件详细说明
简介
有些时候,你必须把某些文件放到 Git 工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件、Java编译生成的.class文件。处理这个需求很简单,从不git add
它们就可以。但这样处理,每次git status
时都会出现Untracked files
,很不爽。
这时候就轮到.gitignore文件出场了。我们可以在仓库根目录创建.gitignore文件,在文件中添加不希望git追踪的文件路径,比如:
# window下自定义文件图标后,自动生成的文件
desktop.ini
再比如:
# IDE idea 和 VS Code的配置文件目录
.idea/
.vscode/
特殊符号
符号 | 作用 |
---|---|
# |
注释 |
! |
恢复追踪 |
? |
any one character except /
|
* |
anything except /
|
空格 | 多余的空格会被忽略,如果pattern中的空格不能忽略,用\ 括起来 |
转移字符 | 上面的符号如果出现在要匹配的文件或目录名中,要用\ 转移后才能匹配,比如\!important!.txt
|
注意
/
和/*
/
忽略整个目录;/*
只忽略目录里的文件,但git仍然追踪这个目录
!
如果文件所在的目录被忽略了,这个文件无法恢复追踪;
-
# 目标: 不追踪doc目录下的所有文件和目录,除了doc/text.txt # 正确写法 /doc/* !doc/text.txt # 错误写法 # 原因 :doc目录被忽略了,文件无法恢复追踪 /doc/ !doc/text.txt
恢复时,要注意必须先恢复最上层
-
# 目标 : 只追踪doc/123.txt文件 # 正确写法 /* !/doc/ /doc/* !/doc/123.txt # 错误写法 # 原因 : 这个文件所在目录doc被忽略了,这个文件因为无法恢复追踪 /* !/doc/123.txt
*
和**
**
可以用来匹配多层目录
-
# 只能匹配a的二级子目录的b, 比如a/x/b /a/*/b # 可以匹配a的任意级子目录的b,比如a/b, a/x/b, a/x/y/b ... /a/**/b
常用配置
官方配置
Github有提供一些.gitignore的常用模板
本人配置
自己的SpringBoot项目配置
# 只追踪 源码目录、maven配置文件、README
/*
!/src/
!pom.xml
!README.md
# 源码目录中忽略的文件
# 测试文件,暂时没做测试,忽略
/src/test
# 包含敏感数据的文件
/src/main/resources/application.properties
/src/main/resources/mybatis-generator.xml