1. 出现问题

在已经提交过的 GIT 管理的项目中,在 .gitignore 文件中新增一些忽略的文件或者文件夹,或者直接新建 .gitignore 文件之后,新增的内容不生效。

2. 实例截图

输入图片说明

3. 实例描述

  1. lifecycle.js 文件已新增到 .gitignore 文件中,但是 lifecycle.js 文件修改的时候依然会上传;
  2. yarn.lock、yarn-error.log、package-lock.json 和 lifecycle.js 是相同的情况。

4. 分析原因

  1. .gitignore 文件的用途:该文件只能作用于Untracked Files,也就是那些从来没有被 GIT 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
  2. 规则不生效因为:那些 .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 执行演示
  1. 删除
    输入图片说明
  2. 提交
    输入图片说明
  3. 推送
    输入图片说明

7. 删除远程库文件夹,保留本地

7.1 命令代码
git rm --cached -r config
git commit -m "删除远程库 config 文件夹"
git push
7.2 执行演示
  1. 添加忽略文件夹
    输入图片说明
  2. 删除
    输入图片说明
  3. 提交
    输入图片说明
  4. 推送
    输入图片说明

8. 总结

  1. 不同文件的作用阶段不同,因此在使用某个功能的时候,就需要搞清除该功能生效的情况。
  2. 删除文件和文件夹的不同命令,需要注意。
  3. push 后文件或者文件夹不会立即变暗,需要关闭编辑器,重新打开项目,忽略的文件或文件夹就会变暗。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐