所有分类
  • 所有分类
  • 未分类

git–.gitignore–使用/详解/实例

简介

本文介绍git的.gitignore忽略文件的用法。

项目中并不是所有文件都需要保存到版本库中的,例如“target”目录及目录下的文件就可以忽略。

忽略某个文件(不提交到版本库的方法):在Git工作区的根目录下创建一个.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。

建议忽略的文件

如下文件建议忽略(不上传到版本仓库):

  1. 操作系统自动生成的文件,比如缩略图等
  2. 编译生成的中间文件,可执行文件等。
  3. 自己的带有敏感信息的配置文件,比如存放口令的配置文件

优先级

Git有多个地方可以配置忽略规则,它的优先级如下(由高到低):

  1. 命令行中的忽略规则,从上往下依次读取
  2. 当前目录定义的规则(当前目录的.gitignore文件)
  3. 父级目录定义的规则(父目录的.gitignore文件)
  4. $GIT_DIR/info/exclude 文件中定义的规则
  5. core.excludesfile中定义的全局规则

.gitignore匹配语法

采用的匹配规则是:globs

  1. **
    • 匹配多级目录,可在开始,中间,结束
  2. *
    • 匹配零个或多个字符
  3. ?
    • 匹配单个字符
  4. []
    • 匹配单个字符列表
  5. 空格
    • 不匹配任意文件,可作为分隔符,可用反斜杠转义
  6. ! 开头
    • 表示否定,该文件将会再次被包含。如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。
    • 可以使用反斜杠进行转义
  7. / 结束
    • 只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
  8. / 开始
    • 匹配项目根目录
  9. 不包含斜杠
    • 它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录

.gitignore不生效

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

解决方法:

git rm -r --cached .
git add .
git commit -m .gitignore
git push origin master

检查.gitignore规则

如果发现.gitignore有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v HelloWorld.class
.gitignore:1:*.class    HelloWorld.class

可以看到HelloWorld.class匹配到了我们的第一条*.class的忽略规则所以文件被忽略了。

示例

Java项目的.gitignore示例

### maven ###
**/.mvn/
**/target/

### gradle ###
**/.gradle/
**/build/

### IntelliJ IDEA ###
**/.idea/
**/*.iws
**/*.iml
**/*.ipr

### VS Code ###
.vscode/

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

前端项目的.gitignore示例

.DS_Store
**/node_modules
**/dist

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Editor directories and files
**/.idea
**/.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

Python项目的.gitignore示例

.idea/

# dotenv
.env

# virtualenv
.venv
venv/
ENV/

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

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

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

# C extensions
*.so

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

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录