当git提交代码到远程仓库时,有一些文件或目录我们不需要提交到远程仓库,比如:Java编译后的target目录,这时我们需要创建一个.gitignore文件,过滤需要忽视掉的文件或目录。
.gitignore模板(java):
## .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
!.gitattributes
!.editorconfig
!.eslintrc
!.travis.yml
*~
## .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
gitignore语法说明:
- 注释:注释使用
#
,换行没有实际作用,只是为方便阅读。 - 正则匹配(不可以用来匹配
/
):- 星号(
*
):匹配零个或多个任意字符。 - 问号(
?
):匹配一个任意字符。
- 星号(
- 目录匹配:
- 当
/
在字符串起始位置时,表示从.gitignore文件所在目录开始匹配,否则下级目录也都将匹配。 - 当
/
在文件名末尾时,只匹配目录,否则同名的目录和文件都将被匹配。
- 当
- 取反(不忽略):之前已经被忽略了的文件,使用
!
后,该文件将会被重新包含到跟踪列表中(即不忽略),注意:如果该文件的父级目录被忽略了,使用!
无效。 - 匹配字符列表:使用
[]
,可匹配中括号里的任意一个字符,比如:ab[sd]gk,即可以匹配:absgk、abdgk。 - 匹配多级目录:使用两个星号
**
,比如:a/**/b 可以用来匹配:a/b、a/x/b、a/x/y/b等等。
由于.gitignore需要在push之前创建,在创建.gitignore之前push的,.gitignore并不会生效。可以通过下面的方法解决:
git rm -rf --cached
git add .
git status
git commit -m ".gitignore"
更新.gitignore文件后,也如上操作。
通过git的命令来检查已有的.gitignore规则是否有效:
git check-ignore [文件或文件名]
git check-ignore -v [文件或文件名]
当文件会被gitignore规则有效时,会输出,反之,则没有输出。带-v的命令,会列出是那条规则产生的效果。
参考文献:
1.gitignore编写规则和语法:https://qietujiang.com/gitignore-guize-yufa.html 。
2.GitHub仓库git-ignore:https://github.com/mengqiang81/git-ignore。