.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可以避免无用文件的上传,也可以防止重要配置信息的泄露.
相关推荐
东方小月7 小时前
如何使用GitHub Actions自动部署我们的项目
前端·github·nestjs
eric-sjq7 小时前
基于xiaothink对Wanyv-50M模型进行c-eval评估
人工智能·python·语言模型·自然语言处理·github
HelloGitHub9 小时前
《HelloGitHub》第 105 期
开源·github
油泼辣子多加11 小时前
2024年12月26日Github流行趋势
github
木心20 小时前
Git基本操作快速入门(30min)
git·github
一个不秃头的 程序员20 小时前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
逸_20 小时前
dify工作流+github actions实现翻译并创建PR
gpt·github·dify
布兰妮甜1 天前
使用GitHub Pages部署静态网站:简易指南
github·pages
董厂长1 天前
VS2022 无法使用GitHub账户登录/无法使用copilot 解决方案
github·copilot
油泼辣子多加1 天前
2024年12月25日Github流行趋势
github