.gitignore
介绍
有一些文件与程序代码无关,如像 eclipse/ IntelliJ IDEA 等 IDE 工具留下来的 .settings、.classpath、.project、.iml、.idea 等各种配置文件,还有 一些编译和运行过程中产生的中间文件等。
我们不能把这些本地化的无用的配置文件提交到远程仓库上面去,这样会造成别人每次都有更新的要求,也会污染别人的开发环境。
另外还有一些私密的文件,比如签名文件,也是不适合提交的。
我们可以编写一个.gitignore
文件,把不需要跟踪的文件和文件夹写上,git就不会去跟踪这些文件了,另外:.gitignore文件与.git文件夹在同级目录下。
规则
使用规则
.gitignore 是 Git 的忽略配置文件,放在项目根目录下,这样在提交代码时就不会跟踪在.gitignore 配置文件列举的文件。
特殊情况下,如果你想强制提交一个在忽略列表里面的文件,也可以使用以下命令:
git add -f 文件名
如果使用了-f依然不能添加,可能是.gitignore写得有问题,可以用git check-ignore -v 文件名
来检查,
$ git check-ignore -v App.class
.gitignore:3:*.class App.class
于是git告诉我们.gitignore
的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。
.gitignore文件不能直接在文件资源管理器中创建,必须使用git命令,
右键点击根目录的文件夹,选择Git Bash Here,
然后输入touch .gitignore
,就可以在创建.gitignore
文件了
规则优先级
.gitignore
文件中,每一行指定一个忽略规则,Git检查忽略规则的时候有多个来源,它的优先级如下(由高到低)
- 从命令行中读取可用的忽略规则
- 当前目录定义的规则
- 父级目录定义的规则,依次递推
- $GIT_DIR/info/exclude 文件中定义的规则
- core.excludesfile中定义的全局规则
编辑规则
空格不匹配任意文件,可作为分隔符,可用反斜杠转义
所有空行或者以#
开头的行都会被Git忽略。
可以直接在其中输入指定的文件名,也可以使用标准的glob模式
匹配。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
glob模式
- *:匹配零个或多个任意字符
- [abc]:只匹配括号内中的任意一个字符
- [0-9]:代表范围,匹配0-9之间的任何字符?
- ?:匹配任意一个字符
- :匹配任意的中间目录,例如a//z可以匹配:a/z,a/b/z,a/b/c/z等
模板
模板网上有很多,比如我从(http://www.javastack.cn/article/2018/git-common-gitignore-file/)找了一个比较全的
## .gitignore for Grails 1.2 and 1.3
# .gitignore for maven
target/
*.releaseBackup
# web application files
#/web-app/WEB-INF
# IDE support files
/.classpath
/.launch
/.project
/.settings
/*.launch
/*.tmproj
/ivy*
/eclipse
# default HSQL database files for production mode
/prodDb.*
# general HSQL database files
*Db.properties
*Db.script
# logs
/stacktrace.log
/test/reports
/logs
*.log
*.log.*
# project release file
/*.war
# plugin release file
/*.zip
/*.zip.sha1
# older plugin install locations
/plugins
/web-app/plugins
/web-app/WEB-INF/classes
# "temporary" build files
target/
out/
build/
# other
*.iws
#.gitignore for java
*.class
# Package Files #
*.jar
*.war
*.ear
## .gitignore for eclipse
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
## .gitignore for intellij
*.iml
*.ipr
*.iws
.idea/
## .gitignore for linux
.*
!.gitignore
*~
## .gitignore for windows
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
## .gitignore for mac os x
.DS_Store
.AppleDouble
.LSOverride
Icon
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
## hack for graddle wrapper
!wrapper/*.jar
!**/wrapper/*.jar