Git 彻底清除历史记录

适用场景

  • 误提交密码、密钥、token 等敏感信息

  • 误提交大文件导致仓库臃肿

  • 需要从所有历史提交中移除某些文件

方法一:git filter-repo(推荐)

安装

pip install git-filter-repo

删除指定文件/目录(从所有历史中移除)

git filter-repo --path .env --invert-paths

git filter-repo --path secrets/ --invert-paths

删除多个路径

git filter-repo --path .env --path config/secrets.json --invert-paths

方法二:BFG Repo-Cleaner

下载 bfg.jar(需要 Java)

https://rtyley.github.io/bfg-repo-cleaner/

删除文件

java -jar bfg.jar --delete-files .env

删除目录

java -jar bfg.jar --delete-folders .idea

替换敏感文本(如密码)

echo "mypassword123" > passwords.txt

java -jar bfg.jar --replace-text passwords.txt

清理并强制推送

git reflog expire --expire=now --all

git gc --prune=now --aggressive

git push --force

方法三:git filter-branch(旧方法,较慢)

git filter-branch --force --index-filter \

'git rm --cached --ignore-unmatch .env' \

--prune-empty --tag-name-filter cat -- --all

清理

git reflog expire --expire=now --all

git gc --prune=now --aggressive

推送到远程

强制推送(会覆盖远程历史)

git push origin --force --all

git push origin --force --tags

注意事项

| 事项 | 说明 |

|--------------|-------------------------------------------------------|

| 备份 | 操作前务必备份仓库 |

| 协作影响 | 所有协作者需重新 clone 或 git pull --rebase |

| GitHub 缓存 | 联系 GitHub 支持清除缓存,否则旧提交仍可通过 SHA 访问 |

| 已泄露的密钥 | 立即轮换,重写历史不能撤回已泄露的信息 |

工具对比

| 工具 | 速度 | 易用性 | 推荐场景 |

|-------------------|------|--------|----------------|

| git filter-repo | 快 | 简单 | 首选方案 |

| BFG | 快 | 简单 | 替换敏感文本 |

| git filter-branch | 慢 | 复杂 | 不推荐,已废弃 |

相关推荐
zhangxl-jc20 小时前
StreamPark2.1.7 添加Flink Home 报错 base64 character 2d 解决方法
大数据·flink
峥嵘life20 小时前
Android 16 EDLA测试STS模块
android·大数据·linux·学习
洛阳纸贵20 小时前
JAVA高级工程师--Elasticsearch安装以及内置分词器、IK分词器
大数据·elasticsearch·搜索引擎
186******2053120 小时前
项目开发基础知识:从概念到落地的全流程指南
大数据·人工智能
说私域20 小时前
AI智能名片商城小程序数据清洗的持续运营策略与实践研究
大数据·人工智能·小程序·流量运营·私域运营
Howie Zphile20 小时前
Git 拉 NocoBase 2.0 beta(next 分支),并“每天自动更新 + 自动编译 + 自动重启”
大数据·git·elasticsearch
sunshine88520 小时前
合规性管理:财务安全与业务连续性的双重保障
大数据·运维·人工智能
lusasky20 小时前
Claude Code v2.1.0+ 版本集成LSP
大数据·数据库·人工智能
历程里程碑21 小时前
子串----和为K的子数组
大数据·python·算法·leetcode·elasticsearch·搜索引擎·哈希算法
Kratzdisteln21 小时前
【1902】process_assignment_pdf()
大数据·人工智能·pdf