把 secret 提交进 Git 历史后,第一步永远是废弃并轮换密钥。
清理历史只能减少继续传播,不能让已经泄露的 secret 恢复安全。
推荐使用 git filter-repo:
git filter-repo --path path/to/secret-file --invert-paths
然后强推清理后的历史:
git push --force --all
git push --force --tags
历史重写会影响所有协作者,执行前必须通知团队,并要求所有人重新同步仓库。