虽然之前最后有提醒,但是还是不够清楚,所以补充说明下,这个方法忽略的是缓存区及远程仓库的文件或者文件夹,也就意味着只有你本地会保留这个文件或者文件夹。同事拉取远程仓库时也会删除他本地工作区的文件或者文件夹,所以要谨慎使用。
最近在开发一个项目时,用到Git来管理代码,里面有一个数据库的配置文件。
因为要在多个环境开发,数据库的配置是不同的,如果我每次提交都带上它,当别人拉取仓库时,会覆盖掉它本地的数据库配置,就需要重新修改,显示这很不科学。
所以我们最后决定,初始化项目的时候提交这个数据库配置文件(这样其他人初始化项目时,不会少一个文件,减少了沟通成本),然后将这个文件加入.gitignore
文件,之后不再提交。
实际操作发现,.gitignore
只对从来没有commit过的文件起作用,因为之前提交过这个数据库配置文件,所以默认提交的话,还是会更新这个文件。
这个时候,就需要考虑如何忽略掉这个文件,让它不再被上传到仓库。
一. 忽略文件夹
如果要删除目录下所有文件包括子目录中的,可以用这段:
git rm -r --cached directory_name
二. 忽略文件
如果要忽略掉单个文件,比如我们想要忽略掉config
文件夹下的database.php
,就可以这样执行命令:
git rm --cached config/database.php # 版本库中移除这个文件
# 然后在 .gitignore 中添加这个文件,用于忽略
git commit -m config/database.php
git push
这样就不会再在远程仓库更新这个文件了。
其他成员pull,working directory中对应的文件会删除,所以如果文件重要,要提前备份。