古之立大事者,不为此超世之才,亦必有坚忍不拔之志——苏轼
写在前面
由于我联系的代码和笔记一直都是使用 Git 推送到某平台管理的,有的时候会出现一些配置文件什么之类的文件,我们不需要将其推送到某平台的。
这个时候 .gitignore
文件的作用就发挥了,这个文件可以告诉 Git 哪些文件或目录不需要推送。
下面就来介绍一下这个文件的使用规则。
常用的忽略规则
常用的忽略规则如下所示:
# #号表示注释 如果需要#号在前面加斜杠 /#
/directory/ # 过滤整个文件夹
*.zip # 过滤所有 .zip 文件
/directory/markdown.md # 过滤单个文件
# 在这些前面加入 ! 表示不过滤该文件
记住这些规则基本就够用了,啊?还不够,请继续往下看
稍微完整的忽略规则
稍微完整的忽略规则如下所示:
- 空格不匹配任意文件,可作为分隔符,可用反斜杠转义
*
通配符,多字符通配?
通配符,单字符通配**
表示匹配任意中间目录如,a/**/z
表示可以匹配a/z
、a/s/z
或a/a/s/z
等[]
可以匹配任何一个在方括号中的字符, 如a.[ac]
表示匹配a.a
或者a.c
,如果[]
中有短划线-
分割两个字符,则表示所有两个字符范围内的都可以匹配如[a-z]
[^…]
和[!…]
表示匹配不在列表中的字符,如[^abc]
匹配除了a, b, c以外的字符。
忽略案例
说也说完了,光说不干也不是我的作风,上一个小案例
*.a # 表示忽略所有 .a 结尾的文件
!lib.a # 表示但lib.a除外
/TODO # 表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 表示忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt # 表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
bin/: # 表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: # 表示忽略根目录下的bin文件
/*.c: # 表示忽略cat.c,不忽略 build/cat.c
debug/*.obj: # 表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: # 表示忽略/foo,a/foo,a/b/foo等
a/**/b: # 表示忽略a/b, a/x/b,a/x/y/b等
!/bin/run.sh # 表示不忽略bin目录下的run.sh文件
*.log: # 表示忽略所有 .log 文件
config.php: # 表示忽略当前路径的 config.php 文件
常用配置
最后上一个常用的配置,可供参考
#Maven beginning
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
#Maven Ending
#Gradle beginning
.gradle
**/build/
!src/**/build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Cache of project
.gradletasknamecache
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
#Gradle Ending
#Idea Begginning
.idea/
*.iml
out/
gen/
idea-gitignore.jar
resources/templates.list
resources/gitignore/*
build/
build.properties
junit*.properties
IgnoreLexer.java~
.gradle
.DS_Store
/verification
#Idea Ending
#Eclipse Begginning
.settings/
.classpath
.project
#Eclipse Begginning