`.gitignore` not work
Problem
提交代码到别人的git repository,发现原先的代码没有.gitignore
文件,很多log文件和编译文件都被提交到了repo上。于是我新建了一个.gitignore
文件,但需要手动删除掉所有多出来的文件再提交一个commit(也就是说.gitignore
只对之后提交的文件具有ignore作用,对已经提交的文件是不管的,即使已经提交的文件被列为了ignore,仍然会被track)。
问题是怎样能让gitignore
对已提交的文件也起作用?
Solution
解决方案其实很简单,即把所有多出来的文件都删掉,再提交一个commit即可,之后这些文件即使再产生也都不会被track了。
当然手动一个一个删很麻烦,可以使用以下的命令批量删除:
git rm . -r --cached
Easter egg
有时候一个文件被gitignore了,而你想知道是哪条规则导致它被ignore的,从而去修改相应的规则,可以使用如下命令(旧版本的git可能没有这个命令):
git check-ignore -v filename
注意上面的filename
最好是相对项目根目录的全路径,这样如果是因为某个文件夹整体被ignore了也可以知道,比如:pyvmomi-master/vshpereAut/vsphere_helper.pyc
。
Comments