.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可以避免无用文件的上传,也可以防止重要配置信息的泄露.
相关推荐
Morpheon9 小时前
Cursor 1.0 版本 GitHub MCP 全面指南:从安装到工作流增强
ide·github·cursor·mcp
LinXunFeng12 小时前
Flutter - GetX Helper 助你规范应用 tag
flutter·github·visual studio code
草梅友仁13 小时前
AI 图片文字翻译与视频字幕翻译工具推荐 | 2025 年第 23 周草梅周报
开源·github·aigc
qianmoQ17 小时前
GitHub 趋势日报 (2025年06月04日)
github
abcnull18 小时前
github中main与master,master无法合并到main
git·github
星哥说事19 小时前
使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHub Pages中
开源·github
勤劳打代码20 小时前
步步为营 —— Github Connection refused 分层诊断
github
寻月隐君21 小时前
深入解析 Rust 的面向对象编程:特性、实现与设计模式
后端·rust·github
qianmoQ1 天前
GitHub 趋势日报 (2025年05月31日)
github
油泼辣子多加2 天前
2025年06月06日Github流行趋势
github