问题:创建 .gitignore文件,将文件或目录加入忽略规则,但是没有生效。
原因是 .gitignore 只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
那么解决方法就是先把暂存区的文件删除(改变成未被追踪状态),注意:以下方法会将远程仓库中的文件也删除,而只保留本地文件,远程仓库中文件会保持与本地缓存区文件一致。
本地删除跟踪,那么提交后远程仓库的相关的文件也会被删除,请谨慎操作。
git ls-files # 查看暂存区的所有文件(这里是git跟踪的文件列表)
git rm -r --cached 指定文件 # 把暂存区的文件删除,使指定文件处于未跟踪状态,可以使用 . 来删除所有文件
git ls-files -o # 查看没有被跟踪的文件,如果执行正确,被忽略的文件应该处于未跟踪状态
git status # 查看目前的状态,发现指定文件被删除
git commit -m . # 提交到本地仓库
git push # 推送到远程仓库,远程仓库中的文件也被删除,只有本地的文件存在。