转自 https://zhuanlan.zhihu.com/p/334908553

项目开发中使用Git作为版本管理工具时,有时并非在项目一开始就添加了.gitignore文件来管理Git忽略规则,或是在项目开发过程中添加或移除了忽略规则,这时由于Git在本地维护着一份遵从创建本地项目时的gitignore规则的Git缓存,因此会造成.gitignore文件不起作用的现象。

解决这个问题的方式就是清除掉本地项目的Git缓存,通过重新创建Git索引的方式来生成遵从新.gitignore文件中规则的本地Git版本,再将该Git版本提交到主干。

例如,如果先使用NPM创建了项目,然后才创建了如下内容的.gitignore文件,那么在提交时本地Git并不会忽略相应的文件和路径。

1
2
3
4
5
# .gitignore

.DS_Store
node_modules
package-lock.json

此时,可通过如下命令解决这个问题:

1
2
3
4
5
6
7
8
9
10
11
1.清除本地当前的Git缓存
git rm -r --cached .

2.应用.gitignore等本地配置文件重新建立Git索引
git add .

3.提交当前Git版本并备注说明
git commit -m "update .gitignore"

4.推送。推送后Git仓库中会删去.gitignore中忽略的文件
git push