git中的“.gitignore” 的忽略规则

git项目中的.gitignore文件的作用是:

忽略项目中的某些文件/文件夹,不把某些本地仓库的文件/文件夹提交到远程的版本库中
通过git init建立的项目或者git clone下来的项目一般都会有这个文件; 其他情况下需自己手工建立此文件

匹配规则为:每行保存一个匹配规则, 同时使用#作为注释标识

*.a # 忽略所有 .a 结尾的文件

!lib.a # lib.a 不忽略

/tools # 仅仅忽略项目根目录下的 tools 文件夹,不包括 subdir/tools

test/ # 忽略 根目录下的 test/ 目录下的所有文件

examples/*.txt # 只忽略 examples/*.txt 但不忽略examples/目录下子目录中的*.txt文件

另外的一些细节情况:

忽略一个特定的文件:/filename.extension

1.忽略所有同名的文件:filename.extension

2.忽略一个特定的目录:folder/ (这会连同其下所有子目录及文件都被忽略)
3.但是排除一个特定的模式:(在 3 的基础上)!folder/some/important/filename.extension

4.忽略指定目录下所有子目录下的特定文件:folder/**/filename.extension

5.同上,但是只匹配文件扩展名:folder/*/.extension

6.同上,但是只匹配特定的目录:folder/**/tmp/

特殊情况

上述情况是项目刚刚建立时使用. 如果一个项目已经建立好, 并且已经push过文件了, 那么此时想把某些目录或文件加入忽略规则,需要将当前目录的git缓存情况才能生效,否则新忽略的文件还是会被上传上去. 原因是:

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

方法如下:(cached前面是两个横线“-”)

git rm -r —cached .
git add .
git commit -m ‘update .gitignore’