GIT忽略文件
我们知道,一些缓存文件、编辑器产生的文件等其他的文件,我们是不希望纳入版本库的。但如果每次git add 文件名,一个个敲下去,这实在是个非常烦人的操作,容易让人奔溃。还是使用git add .爽!那我们有没有办法忽略一些我们不希望纳入版本库的文件呢?答案是有的,可以使用.gitignore,在该文件里设置想要忽略的那些文件。然后使用git add .这些文件也不会被提交了。
比如,我不想将swp文件纳入版本库,以及不需要runtime这个文件夹,那么就可以这样设置
$ vim .gitignore
# 忽略swp文件
*.swp
# 忽略runtime文件夹
/runtime/
下面来说说.gitignore使用规范
- git会忽略以#开头以及空白的行
- 可以使用glob正则,它会递归到每个目录(如果没有指定防止递归的话)
- 可以以/开头,来防止递归
- 可以以/结尾,来指明目录
- 可以使用!来方向选择。
!常见的用法是,我们想忽略掉一个文件夹,但文件夹里index.html保留。那么
/data/
!/data/index.html
表示忽略/data文件夹但是跟踪/data/index.html文件。
下面讲讲什么是glob正则,其实它是一种简化版的正则。
它使用*来匹配0个或多个任意字符。比如
*.php 表示匹配以.php结尾的文件
tmp* 表示匹配以tmp开头的所有文件
使用?来匹配一个任意字符,如
周?伦
使用[]来匹配[]里的任意一个字符,如
[abc] 表示匹配abc其中任意一个
另外,多个字符是连续的话,可以使用-来代替,如
[0-9] 表示匹配任意数字
使用两个星号(**
)表示匹配任意中间目录,比如 a/**/z
可以匹配 a/z
、 a/b/z
或 a/b/c/z
等。
下面我们以一个例子来讲解忽略文件的用法,一般的,我们会忽略/vendor目录,配置文件,日志文件夹/log,缓存文件等。
# 忽略swp文件
*.swp
# 忽略/vendor文件夹
/vendor/
# 忽略配置文件
/app/config/config.php
# 忽略/log文件夹
/log/
# 忽略缓存文件夹
/runtime/
上面所说就是如何去忽略那些不想加入到版本库的文件,一般建议是开始阶段就配置好该文件,防止提交不需要的文件。