.gitignore文件的作用就是让git忽略一些我们不想追踪的文件,比如build文件以及一些IDE产生的中间文件,一般情况下都会按照我们想的方式工作,但有时候却会出现将要忽略的文件加入到.gitignore时,不起作用的情况,下面具体分析并给出解决办法:
** 当你在git库中编写某些代码文件,并已经stage该文件之后,你发现某个文件你不想用了,想在以后的改变中忽略它。然后你在你的.gitignore文件中加入该文件名,结果它并没有被忽略。当你从远程代码库中git clone一份代码中本地并做些修改,build,然后通过git add .**等stage了这些改变,当你通过git status 查看状态时发现不小心把build/文件夹给add进来了。于是你在.gitignore文件中加入了bild/,但发现并不起作用。 **
** 根本原因 **
.gitignore文件只是ignore没有被staged(cached)文件,对于已经被staged文件,加入ignore文件时一定要从staged移除。下面是来自github的一段话:
If you already have a file checked in, and you want to ignore it, Git will not ignore the file if you add a rule later. In those cases, you must untrack the file first, by running the following command in your terminal: $ git rm --cached
因此,要想用gitignore忽略文件,必须先把它们从staged中移除:commit你已有的改变,保存当前的工作。git rm --cached file/path/to/be/ignored。git add .git commit -m "fixed untracked files"