持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
前言
- git 管理项目真的很方便,但是有的时候随着项目的测试或者编译产生很多无用文件比如 java 项目编译产生的 class 文件这些是没有必要上传到仓库的,所以 git 提供了 ignore 功能
ignore
-
我们只需要在仓库根路径下添加
.ignore -
.gitignore文件内容也非常简单,只需要填写我们需要过滤的路径即可 . 下面给出我在项目中使用的.gitignore
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
log/
规范说明
| 规范说明 |
|---|
| 1. 空行或者#开头的将会被git忽略 |
2. 支持 glob 模式匹配 及 正则匹配 |
3. / 表示忽略整个目录 |
4. ! 表示取反忽略 |
| glob模式说明 |
|---|
1. * 表示匹配0个或者多个任意字符 |
2. [] 匹配方括号内任意一个字符 |
3. ? 表示匹配任意一个字符 |
4. [m-n] 表示匹配范围内字符 比如 [a-z] 表示小写字母 ; [a-z]* 表示匹配任意小写字母组成的单词 |
全局配置
ignore正常情况是配置在每个项目中,但是也是支持配置全局的。比如我们的git config user.name正常是全局配置,也看看呀配置在单独每个项目中。如下配置全局gitignore文件。
git config --global core.excludesfile ~/.gitignore
gitignore不生效
-
有的时候在
.gitignore文件中配置了忽略规则,但是修改对应文件后还是被git提示modified 。比如我的项目中有20200413trace.txt。 我在.gitignore中配置了忽略规则[0-9]*trace.txt -
这是因为
.gitignore只会忽略尚未被 git 管理的文件及文件夹。因为.gitignore创建之前20200413trace.txt已经被git add到仓库中了。所以就忽略无效。 -
这种情况我们可以使用
git rm -f --cached folder的方式进行删除缓存后将需要忽略的文件或者文件夹退出git管理,然后才能生效,要注意我们还得通过git commit & git push进行对删除的操作同步到远程。
解决
git rm -r --cached 20200413trace.txt
-
此时我们commit 之后就可以完全忽略文件了。
-
剩下我们就只需要将
.gitignore文件提交到git 仓库即可。