git忽略文件
访问量:12942

一、简介

默认情况下git会检索工作区里面的所有文件(除了.git目录),于是就有个问题,比如IDEA的配置文件(**.xml)等,我们并不想添加到git版本库,但是如不添加,每次执行git status的时候,总有一些待添加的文件提示,如下:

这种感觉总是很不爽的。当然git是不会让我们不爽的,因为git提供了.gitignore文件,来忽略文件。

我们只需要把想需要忽略的文件,放到.gitignore里面即可。

备注:需要注意.gitignore文件也需要放到.gitignore文件里面。

二、忽略规则

1、忽略文件

直接把文件名加到.gitignore里面即可,每个文件占一行,如忽略access.log、error.log、findme.iml三个文件:

2、忽略目录

忽略目录和忽略文件类似,直接添加到.gitignore里面,每个目录占用一行,需要注意,每个目录后面需要添加一个斜杠“/”,这样这个目录下面的所有文件都会被忽略。比如想忽略Public/static、 Runtime以及.idea三个目录,如下:

3、忽略通配符

可能有的时候,我们需要忽略的是文件名或是目录名中包含某个关键字的一类文件或是目录,而不是单个。这个时候可以使用通配符“*”,它能够匹配一个或多个任意字符。比如,我们想把当前目录下所有的.xml结尾的文件都忽略了,可以再.gitignore中添加如下一行:

*.xml

如果想忽略Public目录下Info开头的文件如下:

Public/Info*

再如忽略Public目录下,所有以_data后缀的目录,如下:

Public/*_data

4、如何查询某个文件应用了哪个规则或是有没有被忽略

此时,可以使用 git check-ignore命令,比如查看TestGo.iml应用了哪个规则,命令如下:

git check-ignore -v TestGo.iml

可以看出忽略了TestGo.iml文件,应用了.gitignore文件中第三行的规则 *.xml。

如果针对没有被忽略的文件执行git check-ignore的话,就没有任何输出。

三、注意事项

1、针对忽略的文件,默认情况下不能再添加到暂存区

比如findme.xml文件已经添加到.gitignore中,当执行git add命令的时候就就会提示:

当然,我们也可以通过git add -f 强制添加,关于-f参数,描述如下:

  -f, --force

           Allow adding otherwise ignored files.

2、通过.gitignore文件实现的忽略仅仅针对尚未被git跟踪的文件或目录

如果每个文件已经在git版本库里面,是没法通过.gitignore实现忽略的。我们只能想将其从版本库中删除,然后在通过.gitignore进行忽略。如何仅仅删除版本库中的文件或目录,而不影响工作区呢?

需要使用git rm --cached 命令,仅仅删除暂存区中的该文件或目录,然后提交到版本库即可,具体可以参考“git的删除操作