.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可以避免无用文件的上传,也可以防止重要配置信息的泄露.
相关推荐
Smile丶凉轩8 小时前
微服务即时通讯系统的实现(服务端)----(1)
c++·git·微服务·github
pumpkin845149 小时前
GitHub 和 GitLab
gitlab·github
会讲英语的码农12 小时前
Git项目管理
gitee·github
油泼辣子多加13 小时前
2024年11月21日Github流行趋势
github
A洛14 小时前
Vercel 设置自动部署 GitHub 项目
github·webhooks·自动部署·vercel
油泼辣子多加15 小时前
2024年11月22日Github流行趋势
github
Stara05111 天前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
不能只会打代码2 天前
大学课程项目中的记忆深刻 Bug —— 一次意外的数组越界
java·github·intellij-idea·话题博客
Web极客码2 天前
如何修复WordPress卡在维护模式
服务器·网络·github
油泼辣子多加2 天前
2024年11月17日Github流行趋势
github