本节课咱们学习下.gitignore文件
在本地的代码目录中,有些文件或者目录咱们并不想提交到仓库中,比方一些运行日志等文件。这样的话,咱们提交代码时,就只能一个一个文件去git add
,太麻烦了。
为了解决这个问题,Git里面有一个.gitignore
文件。能够指定Git需要疏忽哪些文件。装备好之后,Git就会主动疏忽满足装备的文件。这样,咱们就能够纵情的使用git add .
来增加文件了。
Git 疏忽规矩优先级
在 .gitingore
文件中,每一行指定一个疏忽规矩,Git 查看疏忽规矩的时分有多个来历,它的优先级如下(由高到低):
- 从指令行中读取可用的疏忽规矩
- 当时目录界说的规矩
- 父级目录界说的规矩,依次递推
-
$GIT_DIR/info/exclude
文件中界说的规矩 -
core.excludesfile
中界说的全局规矩
Git 疏忽规矩匹配语法
在 .gitignore
文件中,每一行的疏忽规矩的语法如下:
- 空格不匹配恣意文件,可作为分隔符,可用反斜杠转义
- 最初的文件标识注释,能够使用反斜杠进行转义
-
!
最初的形式标识否定,该文件将会再次被包括,假如排除了该文件的父级目录,则使用!
也不会再次被包括。能够使用反斜杠进行转义 -
/
完毕的形式只匹配文件夹以及在该文件夹途径下的内容,但是不匹配该文件 -
/
开端的形式匹配项目跟目录 - 假如一个形式不包括斜杠,则它匹配相对于当时
.gitignore
文件途径的内容,假如该形式不在.gitignore
文件中,则相对于项目根目录 -
**
匹配多级目录,可在开端,中心,完毕 -
?
通用匹配单个字符 -
*
通用匹配零个或多个字符 -
[]
通用匹配单个字符列表
匹配示例
-
bin/
: 疏忽当时途径下的bin
文件夹,该文件夹下的所有内容都会被疏忽,不疏忽bin
文件 -
/bin
: 疏忽根目录下的bin文件 -
/*.c
: 疏忽cat.c
,不疏忽build/cat.c
-
debug/*.obj
: 疏忽debug/io.obj
,不疏忽debug/common/io.obj
和tools/debug/io.obj
-
**/foo
: 疏忽/foo
,a/foo
,a/b/foo
等 -
a/**/b
: 疏忽a/b
,a/x/b
,a/x/y/b
等 -
!/bin/run.sh
: 不疏忽bin
目录下的run.sh
文件 -
*.log
: 疏忽所有.log
文件 -
config.php
: 疏忽当时途径的config.php
文件
特殊情况
文件已经提交过
这儿面有一些特殊情况需要考虑,比方某文件已经被提交过了,之后再对他做了一个.gitignore
的疏忽的话。疏忽是不会生效的,需要咱们手动先将缓存删去。
# 删去本地的缓存
git rm -r --cached .
# 从头提交
git commit -am 'gitignore'
增加一个已经装备疏忽的文件
再比方,咱们疏忽了文件夹A,但是现在要往文件夹A中增加代码文件。你会发现你没法把文件夹A中的代码提交。因为文件夹A被疏忽了。
# 强制增加
git add -f 文件A/xxx.js
# 正常提交
git commit -am 'xxx'
查看文件为什么被疏忽
由于.gitignore
文件经常会装备许多内容,某些文件你并不能很直观的知道为什么被疏忽了。所以Git供给了一个查看疏忽的指令。
git check-ignore -v 文件夹A/xxx.js
gitignore主张
最终,供给一个网上整理的关于不同开发语言项目的.gitignore
文件内容的主张:github.com/github/giti…
开启成长之旅!这是我参与「日新方案 2 月更文应战」的第 15 天,点击查看活动详情