.gitignore语法及配置问题

语法及配置

前言

在工程中,并不是所有文件都需要保存到版本库中,例如"target"目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。

.gitignore语法

标识 说明 举例
#或空格 空行或以#开头的行将被git忽略,可以用作注释 ### IntelliJ IDEA ###
* 代表零个或多个任意字符 *.txt会匹配所有后缀为txt的文件
代表一个任意字符 ?.txt 会匹配a.txt 但不会匹配ab.txt
[] 可以匹配括号内的任一字符 [abc].txt 会匹配a.txt,b.txt和c.txt
** 两个星号 ** 表示任意中间目录 **/foo会匹配 foo,a/foo,a/b/foo等
前缀! 表示不忽略 *.txt和!important.txt会忽略所有的.txt文件,但不会忽略important.txt
前缀/ 表示只忽略当前目录下的文件 /test 会忽略当前目录下的test文件,但不会忽略a/test
后缀/ 表示只忽略目录 test/ 会忽略test目录,但不会忽略test文件

温馨提示
/在文件夹名前,/test表示根目录下的某个文件,/test/表示忽略根目录下的/test/目录的全部内容,而test/表示忽略文件夹test下的全部内容,不管是根目录下的/test/,还是某个子目录下的test文件夹,比如:/child/test,都会被忽略

Git 忽略规则优先级

在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

1、从命令行中读取可用的忽略规则

2、当前目录定义的规则

3、父级目录定义的规则,依次递推

4、$GIT_DIR/info/exclude 文件中定义的规则

5、core.excludesfile中定义的全局规则

git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效

gitignore规则不生效

1、.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。

相关git命令:

bash 复制代码
	git rm -r --cached .
	git add .
	git commit -m 'update .gitignore'

2、想添加一个文件到git,发现添加不了,原因是这个文件被.gitignore忽略了

bash 复制代码
$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.

如果你确实想添加该文件,可以用-f强制添加到Git,或者是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查

bash 复制代码
$ git check-ignore -v App.class
.gitignore:3:*.class    App.class

git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

Java项目中常用的.gitignore文件

bash 复制代码
# Prerequisites
*.d
 
# Compiled Object files
*.slo
*.lo
*.o
*.obj
 
# Precompiled Headers
*.gch
*.pch
 
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
 
# Fortran module files
*.mod
*.smod
 
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
 
# Executables
*.exe
*.out
*.app
 
build/
.vscode/

c++项目中常用的.gitignore

bash 复制代码
# Prerequisites
*.d
 
# Compiled Object files
*.slo
*.lo
*.o
*.obj
 
# Precompiled Headers
*.gch
*.pch
 
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
 
# Fortran module files
*.mod
*.smod
 
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
 
# Executables
*.exe
*.out
*.app
 
build/
.vscode/

注意事项

  • 命令和注释别在同一行,如*.txt #注释txt这样会导致这一行无法被识别;
  • git add .之前如果有改动.gitignore一定要 执行 git rm -r --cached;
  • 合理使用.gitignore可以避免无用文件的上传,也可以防止重要配置信息的泄露.
相关推荐
qianmoQ1 天前
GitHub 趋势日报 (2025年05月14日)
github
Yvonne爱编码2 天前
CSS- 2.1 实战之图文混排、表格、表单
前端·css·html·github·状态模式·html5·hbuilder
qianmoQ2 天前
GitHub 趋势日报 (2025年05月11日)
github
Yvonne爱编码2 天前
HTML-3.3 表格布局(学校官网简易布局实例)
前端·html·github·html5·hbuilder
范纹杉想快点毕业2 天前
以项目的方式学QT开发(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
c语言·数据结构·c++·git·qt·链表·github
tonngw2 天前
【Mac 从 0 到 1 保姆级配置教程 12】- 安装配置万能的编辑器 VSCode 以及常用插件
git·vscode·后端·macos·开源·编辑器·github
八股文领域大手子2 天前
HTTP/1.1 host虚拟主机详解
github
HORSE RUNNING WILD2 天前
解决 PicGo 上传 GitHub图床及Marp中Github图片编译常见难题指南
css·python·github
qianmoQ2 天前
GitHub 趋势日报 (2025年05月13日)
github
lkbhua莱克瓦243 天前
用C语言实现了——一个基于顺序表的插入排序演示系统
c语言·开发语言·数据结构·程序人生·github·排序算法·交互