项目使用git进行版本管理,在使用IDE开发的时候,经常会产生一些配置文件,但是又不希望将其push到库上,这里就要用到ignore。
我们可以在任意的目录下创建.gitignore文件来指定哪些文件需要过滤,该文件的作用域是本级目录及其子目录。基本语法如下:
1 2 3 4 |
tmp.txt //忽略tmp.txt *.log //忽略所有log文件 tmp/* //忽略tmp文件夹所有文件 log/**/*.log //忽略log目录下的包括子目录下的所有log文件 |
如果想要定位到当前目录下的文件或者文件夹,就要写成/filename或者/dir。
还有一种情况,就是已经commit了,再加入gitignore是无效的,我们可以删除版本库对文件的track:
1 |
git rm --cached filename |
另外对文件夹内容的track:
1 |
git rm --cached dir/ -r |
最后当然要提交咯,但是这样相当于删除了版本库中的这个文件,但是本地保留,慎重!删除之后其他人clone下来就没有该文件了哦。
已track的文件,又必须在版本库中保留,该如何ignore呢?
首先我们要在.gitignore/exclude中进行上述操作忽略他们,但是这些文件已经包括在版本库,光是这样忽略是木有用的,有修改依然会有M标记。
这时我们在本地clone完成后如下操作,即可忽略这些文件的版本更新:
1 |
git update-index --assume-unchanged filename |
恢复的方法:
1 |
git update-index --no-assume-unchanged filename |
应用于文件夹下所有的文件:
1 |
git update-index --no-assume-unchanged dir/* |
楼下是疯子。哈哈