git的使用中,有些文件我们创建后,忘记添加了.gitignore
文件了。然后,又被提交了。这个时候,我们中途再把这个目录或者文件夹加入到.gitignore
。发现并未生效。这里由于,他们已经被git的缓存记录的缘故。所以如果我们如果能清楚这些目录或者文件的缓存记录的话,问题就能解决。
这里提供了一个解决方法,仅供参考。
- 查看需要我们处理文件列表
结果如下:git status
此时,虽然后面[root@iZj6a7n9ahkehfu7es8l2jA attract]# git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: public/uploads/images/6898885569305033547.jpg modified: public/uploads/images/89442.jpg
/public/uploads
这个目录已经被加入到.gitignore
里面了。但是有这两个文件成了漏网之鱼。所以,他们俩还是在版本管理中的。 - 处理被忽略的文件
根据处理目标的不同,分为处理目录和和处理文件。- 处理目录
git rm -r --cached [目录名]
- 处理文件
git rm --cached [文件名]
-r
参数的区别,-r
代表递归处理。只有目录的时候需要使用-r
。
原理就是把他们从缓存中清除掉就行了。
这里,我们目录处理为例展示。[root@iZj6a7n9ahkehfu7es8l2jA attract]# git rm -r --cached public/uploads rm 'public/uploads/images/6898885569305033547.jpg' rm 'public/uploads/images/89442.jpg'
此时,可以看到这两个文件,已经变成删除状态了。后续的代码更新提交,他们就被忽略了。[root@iZj6a7n9ahkehfu7es8l2jA attract]# git status On branch master Your branch is up to date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: public/uploads/images/6898885569305033547.jpg deleted: public/uploads/images/89442.jpg
- 处理目录