如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除

想把项目的前后台代码放到同一个git仓库管理,由于未设置.gitignore,就使用vscode做stage操作(相当于git add . 命令 其中【.】点表示全部文件),观察将要入库的文件发现,node_modules、target、.idea、log等与源码无关的文件夹都被包含在内,因为没有仔细研究git,只在前端代码的文件夹添加了一个.gitignore文件,导致后端代码的target、.idea、log文件夹未被过滤而导入了git库中。

bash 复制代码
## 前端.gitignore

**/node_modules
**/.idea
**/target
**/log   # 此设法错误

第二天在后端目录添加了单独的.gitignore文件,但是刷新vscode的版本管理窗口,依然有target、.idea文件夹中的内容处于changes状态,等待被提交。

bash 复制代码
## 后端.gitignore

target/
.idea/
log/

# 或不带杠
target
.idea
log

我查了gitignore文件配置方法,允许配置多个.gitignore

Git中的多个".gitignore"文件是否可行|极客教程

调整.gitignore的位置也不行,期间还遇到webpack启动失败、vscode中node_modules文件夹显示灰色的问题。webpack启动失败重新使用 npm install 下载依赖解决,node_modules文件夹显示为灰是因为.gitignore设置node_modules不受git管理的原因。

找到这样一篇文章解决了我的疑问:

git 修改.gitignore后生效_gitignore什么时候生效-CSDN博客

原因是,.gitignore中设置target、.idea、log后,git add . 不会再向git库中添加这些文件,git status也检测不到这些文件夹中的变化;但是已经存在于git库中的target、.idea、log文件夹的文件,在新增.gitignore设置target、.idea、log时,git add . 是不会将已经存在于git库中的文件删除的。

所以需要使用大杀器:git rm -r --cached . 删除库中的全部文件

--cached参数的作用不是清除缓存,而是在移除版本控制中的指定文件,并保留工作区中的该文件

git rm 命令--cached参数的作用 - 简书

到此整个流程基本清晰,如果git本地库中的文件通过git add . 同步无法删除,就需要使用git rm命令强制删除,如果要保留工作区的文件就要加上--cached参数。然后重新用git add命令更新git的 本地版本库

bash 复制代码
admin@DESKTOP-RM6PF2U MINGW64 /d/code/gitcode/test (master)
$ git rm -r --cached .
rm '.gitignore'
rm '.idea/codeStyles/codeStyleConfig.xml'
rm '.idea/frontend.iml'
rm '.idea/inspectionProfiles/Project_Default.xml'
rm '.idea/modules.xml'
rm '.idea/test.txt'
rm '.idea/workspace.xml'
rm 'index.html'
rm 'package.json'

admin@DESKTOP-RM6PF2U MINGW64 /d/code/gitcode/test (master)
$ git rm -r --cached .
fatal: pathspec '.' did not match any files

admin@DESKTOP-RM6PF2U MINGW64 /d/code/gitcode/test (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    .gitignore
        deleted:    .idea/codeStyles/codeStyleConfig.xml
        deleted:    .idea/frontend.iml
        deleted:    .idea/inspectionProfiles/Project_Default.xml
        deleted:    .idea/modules.xml
        deleted:    .idea/test.txt
        deleted:    .idea/workspace.xml
        deleted:    index.html
        deleted:    package.json

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore
        index.html
        package.json

git rm -r --cached . 执行后同样要git commit生效

另外有个命令可以查看工作区和索引中的文件:git ls-files

bash 复制代码
admin@DESKTOP-RM6PF2U MINGW64 /d/code/gitcode/test (master)
$ git ls-files
.gitignore
index.html
package.json

git ls-files (Plumbing Commands) - Git 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云

如何查看git已经加入本地仓库的文件_git查看本地仓库文件_captain飞虎大队的博客-CSDN博客

07_git常用指令_哔哩哔哩_bilibili

vim列编辑模式_vim列模式-CSDN博客 ctrl+v

【精选】gitignore简单入门教程_gitignore怎么用_Cheney822的博客-CSDN博客

Vscode Git代码至Gitee - 知乎

如何编写gitignore文件(摘抄) - 简书

Git常用命令整理_git rm -r --cached_imautumn的博客-CSDN博客

相关推荐
_codemonster6 小时前
git 容易混淆的点
git
_codemonster9 小时前
Git 最常用操作和原理
大数据·git·elasticsearch
_codemonster18 小时前
.git文件夹里所有文件详解
git
01杭呐19 小时前
一次错误分支合并导致 `master` 变脏的排查与修复
git
_codemonster19 小时前
git本地以及github查看历史版本、版本回退
git·github
周小码1 天前
10分钟搭建私有Git服务器:Soft Serve实战
运维·服务器·git
梅塔文·欧帕西安卡琼2 天前
git的底层原理详解
git
待什么青丝2 天前
【git的摸鱼技巧】之工欲善其事
git·elasticsearch·搜索引擎
2601_961194022 天前
高中英语教资资料推荐|科三大题背诵和教学设计模板
git·开源·github·开源软件·开源协议·ossinsight
ting94520002 天前
InsForge Backend Branching 后端全链路 Git 式分支技术原理、架构实现与底层源码剖析
人工智能·git·elasticsearch·架构