Agent Skills
返回列表
从 Git 历史彻底删除文件

从 Git 历史彻底删除文件

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_137732f6/git-clear-commit-history。

技能介绍

什么时候需要动历史

把敏感文件或大文件 git add 进仓库后,即便后续 commit 里删掉了,对象仍留在 .git 里;别人 clone、fork 或翻旧提交都能再看到。单靠新提交「覆盖」无法从全部分支和标签里抹掉同一路径。

技能在做什么

本技能以 git filter-repo 为主线,而不是手搓 filter-branch。流程上会先确认仓库路径、是否在当前目录,并强烈建议先备份;再检查仓库与远程状态,对单个文件、多个文件或整个目录执行历史重写,最后用 git log 等方式验证历史中是否还能搜到目标路径。

核心效果可以概括为:

  • 从每一次 commit 中移除指定路径
  • 同步清理所有分支与所有 tag 上的引用
  • 历史改写后说明为何需要 force push,以及协作者应重新 clone 或按指引同步

若删除的是密钥、token 或私钥,技能还会提醒:在平台上吊销旧凭证、检查 fork、CI 缓存与本地旧 clone,并明确「历史删掉 ≠ 从未泄露」。

边界与注意点

  • 只适用于需要从完整历史清除文件的场景;若文件仅出现在最近一次 commit,应走 amend 等更轻量的方式。
  • 重写历史会改变 commit SHA,所有协作者必须对齐新历史,否则可能把已删文件再次推上去。
  • 删文件后仓库体积未必立刻下降,有时还需配合 git gc 等回收对象。

使用场景

  • 误把 `.env` 或含 API 密钥的配置文件提交到远程,需要从全部 commit 与分支里彻底抹掉该路径
  • 仓库因误提交大体积二进制或数据集导致 clone 变慢,要从历史各层删除该文件以缩小对象库
  • 合规或安全审计要求移除历史中某份私钥、token 文件,并同步处理所有 tag 上的引用
  • 开源仓库某路径曾公开敏感内容,需要在 force push 前按技能流程备份、过滤并验证历史中已无该文件

适合人员

  • 维护公司 monorepo 的 DevOps,误合并进密钥后要在不改业务代码的前提下重写 Git 历史
  • 负责开源项目维护的维护者,需要把误公开的 token 从全分支历史中删除并通知 fork 与协作者
  • 刚接手遗留仓库的后端工程师,要清理历史中废弃的大文件以减轻 CI 与新人 clone 成本
  • 安全响应同学跟进泄露事件,需按步骤删除历史、吊销旧凭证并检查 CI 缓存与旧 clone