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

devtools/2024/12/23 1:52:54/

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

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

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

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

操作系统自动生成的文件,比如缩略图等
编译生成的中间文件,可执行文件等。
自己的带有敏感信息的配置文件,比如存放口令的配置文件
优先级
Git有多个地方可以配置忽略规则,它的优先级如下(由高到低):

命令行中的忽略规则,从上往下依次读取
当前目录定义的规则(当前目录的.gitignore文件)
父级目录定义的规则(父目录的.gitignore文件)
$GIT_DIR/info/exclude 文件中定义的规则
core.excludesfile中定义的全局规则
.gitignore匹配语法
采用的匹配规则是:globs。

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

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/### VS Code ###
.vscode/# 忽略所有 .pyc 文件,它们是Python编译后的字节码
*.pyc
# 忽略所有 .pyo 文件,它们是Python优化后的字节码
*.pyo
# 忽略所有 .env 文件,这些文件通常包含敏感信息
*.env
# 忽略所有日志文件和文件夹
*.log
logs/#Built application files
*.apk
*.ap_# Files for the Dalvik VM
*.dex# Java class files
*.class# Generated files
*/bin/
*/gen/
*/out/# Gradle files
.gradle/
*/build/
gradlew
gradlew.bat# Local configuration file (sdk path, etc)
local.properties# Proguard folder generated by Eclipse
proguard/# Log Files
*.log# Android Studio Navigation editor temp files
.navigation/# Android Studio captures folder
captures/# Intellij#gradle wrapper
gradle/#some local files
*/.settings/
*/.DS_Store
.DS_Store
*/.idea/
.idea/
gradlew
gradlew.bat#tem
*.tem
*.temp
#.swp
*.*~
~*.*#打包的文件,Package Files
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar# virtual machine crash logs,
#see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*#iOS相关过滤规则
# Xcode
.DS_Store
#*/build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
*.hmap
*.xccheckout
*.xcworkspace
!default.xcworkspace#CocoaPods
Pods
!Podfile
!Podfile.lock#unity项目中使用的忽略规则
#/[Ll]ibrary/
#/[Tt]emp/
#/[Oo]bj/
#/[Bb]uild/
#/[Pp]rojectSettings/ProjectVersion.txt
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.userprefs
*.pidb
*.booproj
*.pidb.meta
sysinfo.txt# 忽略特定文件类型
*.bak

http://www.ppmy.cn/devtools/35516.html

相关文章

redis数据结构

redis优势 Redis是缓冲中间件,是C语言编写的基于内存的高速缓存数据库,key-value存储系统结构,包含丰富的数据类型,string,list,set,zset,hash Redis中提供很多功能 缓存,事件发布或订阅,高速队列等场景丰富数据结构用于直接存取基于内存速度快可持久…

链式队列基本操作

链式队列的基本概念 链式队列是一种常见的数据结构,它使用链表作为其底层数据存储结构。链式队列的特点是动态的内存分配,可以有效地处理队列的入队和出队操作。下面,我将介绍链式队列的实现方法,并提供相应的C语言代码示例。 链…

代码本地化

目的 代码本地化(Localization)是指将软件应用程序中的文本、图形、声音和其他内容翻译成特定语言的过程,同时确保这些内容在目标文化中适当地呈现。本地化不仅仅是对文本进行翻译,还包括对日期、时间、数字、货币、排序顺序、文本…

yolov8训练自己的数据集

截至我的知识更新日期(2023年),YOLOv8 并不是一个已经公开发布的模型。YOLO(You Only Look Once)系列中最新的稳定版本是 YOLOv7,由 Ultralytics 团队开发。如果在此之后 Ultralytics 或其他团队发布了 YOL…

[redis] redis为什么快

1. Redis与Memcached的区别 两者都是非关系型内存键值数据库,现在公司一般都是用 Redis 来实现缓存,而且 Redis 自身也越来越强大了!Redis 与 Memcached 主要有以下不同: (1) memcached所有的值均是简单的字符串,red…

Java解决最后一个单词长度

Java解决最后一个单词长度 01 题目 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hel…

Agent AI智能体:未来社会中的引领者还是挑战者?

随着Agent AI智能体的智能化水平不断提高,它们在未来社会中将扮演重要角色,并对我们的生活产生深远影响。以下是我对Agent AI智能体的角色、发展路径以及可能带来的挑战的一些看法: 角色与应用领域: 个人助理和虚拟伴侣&#xff…

语音识别--单声道转换与降采样

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…