.gitignore

背景

本文是对.gitignore文件的一些介绍

.gitignore文件可以通过写入一些规则指定尚未commit提交的文件被git忽略,使得与规则匹配的文件,不进行版本管理。粗暴的说,就是.gitignore可以使一些文件不被添加到github上。且已经commit的文件不受.gitignore影响。

当然这个我们是可以解决的,这个我在后面会介绍。


规范

# 为注释
//开头表示(忽略)目录
! 否定模式,任何由先前模式排除的匹配文件将被再次包含,即不忽略。如果该文件的父目录被排除,则不可能重新包含文件

可以使用shell所使用的正则表达式来进行模式匹配
如果模式不包含斜杠/,Git将其视为shell glob模式,并检查与.gitignore文件位置相对的路径名的匹配(相对于工作树的顶点,如果不是从.gitignore文件)

两个连续的 **与完整路径名匹配的模式可能有特殊含义

尾随/**匹配内部的一切。例如abc/**匹配目录abc内的所有文件,相对于.gitignore文件的位置,具有无限深度


模式

.gitignore文件过滤有两种模式,开放模式和保守模式

开放模式

开放模式设置过滤哪些文件和文件夹

1
2
3
4
5
6
7
8
9
# 过滤文件夹
/directoryName

#指定过滤某种类型的文件
*.zip
*.rar

#指定过滤某个具体文件
/directoryName/fileName

保守模式

保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。

1
2
3
4
5
6
7
8
9
# 跟踪文件夹
!/directoryName

#跟踪某种类型的文件
!*.zip
!*.rar

#跟踪某个具体文件
!/directoryName/fileName

配置准则

共享模式与保守模式相结合。

比如,只想跟踪某个目录下的其中一个文件,可以先共享模式将整个目录设置为不跟踪,再通过保守模式把需要跟踪的文件设置为被跟踪


问题解决

开篇提到了如果在设置.gitignore之前,有的文件已经commit过,即已经被git管理了的,.gitignore的规则是不会起作用的

这个问题有一个解决方案

需要对已经提价的文件执行如下命令,即可

1
git rm --cached FILENAME

参考

gitignore
Ignoring files
Github使用gitignore忽略增加指定文件
Git忽略规则.gitignore梳理
.gitignore

关注我的微信公众号[李一二],即时看更多的文章