已提交过的文件夹,如何从 GitHub 中删除

项目里的 scripts/ 文件夹不想提交到 GitHub,但历史提交里已经有了。直接在 .gitignore 里写 scripts/ 并不能解决问题,因为这些文件已经被 Git 追踪过,忽略规则对它们不生效。正确的做法是先把它们从 Git 的追踪中移除,同时保留本地磁盘上的文件。

01 | 为什么 .gitignore 不管用

.gitignore 只对「尚未被追踪」的文件生效。一旦某个文件已经被提交过,Git 就会持续追踪它,后续的忽略规则会被忽略。所以需要先主动取消追踪,再让忽略规则接管。

可以用下面的流程理解「忽略规则」与「追踪状态」之间的关系:
flowchart TD A文件存在于工作区 --> B{是否已被 Git 追踪?} B -- 否 --> C.gitignore 生效\
Git 忽略该文件
B -- 是 --> D.gitignore 不生效\
Git 持续追踪
D --> E执行 git rm -r --cached E --> F文件变为未追踪状态 F --> C

也就是说,.gitignore 决定的是「未追踪文件要不要被纳入追踪」,而 git rm --cached 决定的是「已追踪文件要不要退出追踪」。两者配合,才能让一个曾经提交过的目录彻底被忽略。

02 | 具体操作步骤

在项目根目录下依次执行以下命令。

① 从暂存区移除目录

bash 复制代码
git rm -r --cached scripts/

--cached 表示只从 Git 的暂存区(索引)中清理,不删除本地磁盘上的实际文件。

② 确认变更状态

bash 复制代码
git status

此时会看到 deleted: scripts/... 的提示,意思是 Git 准备删除对这些文件的追踪,而本地文件依然完好无损。

③ 提交这次更改

bash 复制代码
git commit -m "chore: remove scripts directory from git tracking"

④ 推送到远程仓库

bash 复制代码
git push

整个操作过程中,本地文件与 Git 追踪状态的变化如下:
sequenceDiagram participant Local as 本地磁盘 participant Index as Git 暂存区/索引 participant Remote as 远程仓库 GitHub Note over Local,Index: 操作前:scripts/ 已被追踪 Local->>Index: git rm -r --cached scripts/ Note over Local: 本地文件保持不变 Note over Index: 取消对 scripts/ 的追踪 Index->>Index: git commit Index->>Remote: git push Note over Remote: scripts/ 从远程仓库移除

03 | 执行后的效果

  • 远程仓库(GitHub):scripts/ 目录及其下的文件会从最新提交中移除,但历史提交中仍然保留。如需从整个 Git 历史中彻底清除,需要使用 git filter-repo 等工具重写历史。
  • 本地文件夹:电脑上依然完整保留 scripts/ 文件夹和所有脚本。
  • 后续变化:在 .gitignore 中添加 scripts/ 规则后(如果尚未添加,请在提交前完成),之后本地对它的修改或新增文件,Git 都不会再提示或追踪。

关注我,和AI一起成长~

相关推荐
高频因子挖掘机39 分钟前
量化项目的数据架构怎么设计?从第一份行情到可扩展的 Python 研究环境
后端·github·api
高频因子挖掘机12 小时前
同一交易日出现重复 K 线:去重前先确认时间、来源和粒度
后端·github·api
SL_staff14 小时前
从邮箱传文档到协同流重构:企业文档协作的系统性破局实践
java·开源·github
用户72737441388417 小时前
版本锁定实战:从 `git tag` 到 `package-lock.json` 的完整闭环
github
暖心hebbie设计学习17 小时前
GitHub 热榜周报(10.19)|5 个把 AI 装回本地的开源项目:多 agent 控制台、本地语音、节点式生成(含技术看点)
人工智能·github
用户别睡觉17 小时前
从 0 到 1 开源:基于 FastAPI 和本地大模型打造一个提示词安全网关
github
mr_g17 小时前
一个注解搞定 AGI,两个注解搞定 AMI —— SmartCall 让 Java 对接 Asterisk 简单到离谱
github
sbjdhjd20 小时前
从签名重放到 Agent Harness:一堂安全课程如何把前端逆向、MCP 与工程约束串起来
网络安全·ai·github·agent·webshell·mcp·harness
逛逛GitHub1 天前
火了两周的 30 万 Star 逆向 GitHub 开源神器,网友都用它来干啥?
github
wflynn1 天前
GitHub 日榜趋势速报 | 2026-10-18
开源·github