刚开始用git的时候,喜欢用git add *把所有文件都加入到版本管理中。

后来发现,因为我在virtualenv下面创建的内容,在跑测试的时候,会产生__pycache__文件夹,里面的很多东西都不需要纳入版本管理中,于是就想把它删掉。

一般来说,用的是git rm命令,比如

git rm -r __pycache__

但是它会直接删掉硬盘上的文件,我们可以加上-n参数查看他会删掉哪些文件。

(.venv) [root@wbvalid SocialMatrix]# git rm -r -n BaseClasses/__pycache__/

rm 'BaseClasses/__pycache__/World.cpython-36.pyc'

比如结果如上所示。

那么如果我想保留硬盘上的这个文件,而只删除版本管理中的文件,就需要加入--cached参数。

(.venv) [root@wbvalid SocialMatrix]# git rm -r --cached BaseClasses/__pycache__/

这样,版本管理中的__pycache__文件夹就被删除了。后续想要排除这个文件夹,只需要在.git文件存在的目录下添加一个.gitignore文件,让git add的时候跳过这个文件夹即可。

(.venv) [root@wbvalid SocialMatrix]# cat .gitignore

# skip .venv

.venv/

# skip */__pycache__

*/__pycache__

这样就可以不用担心把这些cache文件加入版本管理啦。