谢谢@jessicway 同学的提醒。我之前没考虑只需要删除服务器上已提交的文件,但是本地不想删除的情况。
我们先看看 git rm
命令的说明
可以看到其实加上 --cached
参数就可以实现只去除版本控制而不删除本地文件的功能了。即 git rm --cached file
。
首先说说 gitignore
文件的作用:
该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件
因此,有时候我们一开始在上传项目的时候把某些不必要的文件也添加进了git的版本控制。此时 gitignore
对这些文件就不起作用了。因此我们要先从 git
里面把这些文件 untracked
,然后修改 gitignore
,最后提交。
具体操作:
- 从 Git 的数据库中删除对于该文件的追踪;
git rm -r --cached loggers # -r 是允许递归删除,当要删除的是文件夹的时候有用
- 1
注意:这里 --cached
的意思是只去除版本控制而不删除本地文件,如果不写的话会把本地文件也删掉。所以要不要加 --cached
参数就看自己需要了。
-
修改
.gitignore
, 把对应的规则写入.gitignore
,让忽略真正生效; -
提交+推送。就是
add commit push
啦。
PS:关于 .gitignore
文件的编写大家可以参考下面两篇文章:
Git 的 .gitignore 配置
Git之忽略文件(ignore file)