1. 出现问题
在已经提交过的 GIT 管理的项目中,在 .gitignore 文件中新增一些忽略的文件或者文件夹,或者直接新建 .gitignore 文件之后,新增的内容不生效。
2. 实例截图
3. 实例描述
- lifecycle.js 文件已新增到 .gitignore 文件中,但是 lifecycle.js 文件修改的时候依然会上传;
- yarn.lock、yarn-error.log、package-lock.json 和 lifecycle.js 是相同的情况。
4. 分析原因
- .gitignore 文件的用途:该文件只能作用于Untracked Files,也就是那些从来没有被 GIT 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
- 规则不生效因为:那些 .log 文件曾经被 GIT 记录过,因此 .gitignore 对它们完全无效。
5. 解决办法
5.1 方案一
未被 GIT 记录过,那就只有删除远程库和本地的被忽略文件或文件夹。
- 1.1 删除本地被忽略的文件;
- 1.2 git add *
- 1.3 git commit -m “xxx”
- 1.4 git push
按照此方案,会导致本地文件或者文件夹也被删除,这样会导致本地也会存在问题。
5.2 方案二
未被 GIT 记录过,删除远程库被忽略文件或文件夹,保留本地的被忽略文件或文件夹。
- 2.1 git rm --cached filename/-r directory
- 2.2 git commit -m “xxx”
- 2.3 git push
6. 删除远程库文件,保留本地
6.1 命令代码
git rm --cached yarn-error.log
git commit -m "删除远程库 yarn-error.log 文件"
git push
6.2 执行演示
- 删除
- 提交
- 推送
7. 删除远程库文件夹,保留本地
7.1 命令代码
git rm --cached -r config
git commit -m "删除远程库 config 文件夹"
git push
7.2 执行演示
- 添加忽略文件夹
- 删除
- 提交
- 推送
8. 总结
- 不同文件的作用阶段不同,因此在使用某个功能的时候,就需要搞清除该功能生效的情况。
- 删除文件和文件夹的不同命令,需要注意。
- push 后文件或者文件夹不会立即变暗,需要关闭编辑器,重新打开项目,忽略的文件或文件夹就会变暗。