.gitignore配置文件

514 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情

========================================= .gitignore的基础用法 =========================================

.gitignore 文件是一个文本文件,它告诉 Git 要忽略项目中的哪些文件或文件夹。

本地 .gitignore 文件通常被放置在项目的根目录中。你还可以创建一个全局 .gitignore 文件,该文件中的所有条目都会在你所有的 Git 仓库中被忽略,但通常根据项目不同单独建立项目级的 .gitignore 文件即可。

要创建本地 .gitignore 文件,请创建一个文本文件,并将其命名为 .gitignore(请记住在开头包含 .)。 然后根据需要编辑该文件。在每一行列出你希望 Git 忽略的文件或文件夹。

该文件中的条目也可以遵循匹配模式。

  • * 用作通配符匹配
  • / 用于忽略相对于 .gitignore 文件的路径名
  • # 用于将注释添加到 .gitignore 文件

一.基础语法

.gitignore配置文件的一些通用技巧 [参考:git-scm.com/docs/gitign…]

  1. 空白行不匹配任何文件,所以可以作为可读性的分隔符,同时两端的空格将会被忽略.

  2. 使用[#]开头,将会注释掉整行,使其不进行匹配操作,如果需要匹配#开头,可以使用转义字符[].

  3. 匹配模式以[/]结尾,表示想要匹配一个目录及其子文件.(比如[foo/]会匹配foo目录及其下面的路径.);匹配模式不包含[/],将会全局匹配该文件.

  4. 通配符

[*]:  匹配除[/]以外的任何内容,也就意味着[*]不能跨目录.
[?]:  匹配除[/]和[[]以及[]]以外的任何一个字符.
[**]: 匹配所有的内容,或者说匹配任意目录下的内容.

示例:

  1. [**/foo/bar] 将会匹配所有直接在foo目录下的bar,无论foo处在何处.
  2. [foo/**]则表示匹配foo目录下的所有文件和目录.
  3. [a//b]则可以匹配a/b, a/c/b, a/c/d/b,即此处的[]可以表示0个或多个.

!!! 需要注意的是,除上面示例的用法外,剩余的[**]都是无效的..

  1. 可以通过前缀[!]来表示不忽略某些文件,比如可以通过[!a]来确保文件a不会被忽略,即时前面已经声明了忽略其父目录,该模式优先级高于普通忽略模式.

二.常用命令

  1. git -rm [git-scm.com/docs/git-rm]

删除文件索引,或者同时删除文件索引和物理文件.可以使用通配符.

  1. git-check-ignore [git-scm.com/docs/git-ch…]

调试.gitignore文件

三.注意事项

  1. 如果文件已经被git管理,那么后续添加的忽略模式将不会生效,具体解决方法,参考<<二.常用命令>>.

Java项目


#=======================================================================================================================
#==============================               java忽略文件                           =====================================
#=====================         https://github.com/github/gitignore/blob/master/Java.gitignore         ==================
#=======================================================================================================================
# 编译后的class文件,忽略所有以[.class]结尾的文件
*.class
# 日志文件,忽略所有以[.log]结尾的文件.
*.log
# BlueJ 文件,忽略所有以[.ctxt]结尾的文件.
*.ctxt
# Mobile Tools for Java (J2ME),忽略[.mtj.tmp/]目录及其子文件.
.mtj.tmp/
# 打包文件,忽略所有以[.jar]或[.war]或[.nar]或[.ear]或[.zip]或[.tar.gz]或[rar]结尾的文件.
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# 虚拟机崩溃日志,忽略所有以[hs_err_pid]开头的文件.[see http://www.java.com/en/download/help/error_hotspot.xml]
hs_err_pid*
#=======================================================================================================================
#==============================               maven忽略文件                           ===================================
#=====================         https://github.com/github/gitignore/blob/master/Maven.gitignore        ==================
#=======================================================================================================================
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
!/.mvn/wrapper/maven-wrapper.jar
#=======================================================================================================================
#==============================               IDE环境忽略文件                           ==================================
#=====================         https://github.com/github/gitignore/blob/master/Maven.gitignore        ==================
#=======================================================================================================================
#----------------IDEA-------------
.idea/*
.idea/compiler.xml
.idea/encodings.xml
.idea/modules.xml
*.iml
#=======================================================================================================================
#==============================               other环境忽略文件                           ================================
#=====================         https://github.com/github/gitignore/blob/master/Maven.gitignore        ==================
#=======================================================================================================================
*.sw?
.#*
*#
*~
.classpath
.project
.settings/
bin
build
target
dependency-reduced-pom.xml
*.sublime-*
/scratch
.gradle
Guardfile
README.html
*.iml
.idea

Python项目

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# 数据集文件
*.csv
*.tsv
*.dat

# IDE文件
.idea

# C extensions
*.so
.idea

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

##ignore this file##
/target/
/.idea/
/.settings/
/.vscode/
/bin/

.classpath
.project
.settings
.idea
 ##filter databfile、sln file##
*.mdb
*.ldb
*.sln
##class file##
*.com
*.class
*.dll
*.exe
*.o
*.so
# compression file
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.tar.gz
*.rar
*.zip
*.via
*.tmp
*.err
*.log
*.iml
# OS generated files #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
.factorypath
/.mvn/
/mvnw.cmd
/mvnw