type
status
date
slug
summary
tags
category
icon
password

使用 `git filter-branch` 或 `BFG Repo-Cleaner` 理 Git 提交历史(敏感信息提交记录)

一、检查 Git 历史中是否存在 .env 文件

以下是几种验证方法,从简单到详细:

方法一:快速检查文件历史

方法二:检查所有分支和标签

方法三:遍历所有提交查找文件

方法四:检查具体内容(更彻底)

方法五:使用 git filter-repo 验证

方法六:检查打包对象(最彻底)

🔍 完整验证脚本

创建一个验证脚本 check-env-history.sh
使用方式:

📊 可视化检查(推荐)

使用 git log 的图形化输出:

✅ 验证清理是否成功的标准

清理成功的标志:

🎯 实战示例

💡 额外建议

清理后的完整验证流程:
如果上述任何检查都没有输出,就说明 .env 文件已经从 Git 历史中彻底清除了!🎉

二、清理 Git 历史中的 .env 文件

从 Git 历史中彻底删除敏感文件是个重要的安全操作。下面介绍两种方法:

方法一:使用 BFG Repo-Cleaner(推荐)

BFG 比 git filter-branch 快 10-720 倍,而且更简单易用。

方法二:使用 git filter-branch

这是 Git 原生方法,但比较慢且复杂:

方法三:使用 git filter-repo(现代替代方案)

Git 官方推荐用 git filter-repo 替代 filter-branch

⚠️ 清理后的重要步骤

🔒 最佳实践建议

1. 添加 .gitignore
2. 使用 .env.example 作为模板
3. 轮换所有暴露的密钥
4. 使用 pre-commit hook 防止提交

性能对比

方法
速度
易用性
推荐度
BFG
⭐⭐⭐⭐⭐
⭐⭐⭐⭐⭐
最推荐
filter-repo
⭐⭐⭐⭐
⭐⭐⭐⭐
推荐
filter-branch
⭐⭐
⭐⭐
不推荐(已废弃)