Repo Scrub 是一个用于在发布或转让仓库前排查隐患的离线工具,通过 git 与正则表达式运行,无需联网。它针对三类常见且容易发现过晚的问题:提交到 .env 的密钥、缺失的 LICENSE、以及不清晰的代码来源。建议进行两遍:发布或转让前先扫描自己的仓库;收到他人仓库后再次扫描,因为无法验证对方的清理结果。
扫描(仅报告):
python3 scripts/scrub_repo.py /path/to/repo
报告内容包含跟踪文件中的密钥(脱敏,附 file:line)、.env 文件、git 历史泄露命中、LICENSE 是否存在,以及机器人或可疑提交者。发现泄露密钥时应先由人工到服务商处轮换,再改动仓库。
应用安全修复:
python3 scripts/scrub_repo.py /path/to/repo --fix --license MIT --owner "Your Name"
该命令会取消跟踪 .env、把 .env/.env.* 加入 .gitignore、生成值被清空的 .env.example,并在缺失时生成 LICENSE。加 --redact-code 还会在工作区把跟踪源码中发现的密钥替换为 REDACTED_SECRET,提交前需审查 diff。
历史泄露只报告,绝不自动改写——这属于破坏性操作且需要强制推送。扫描会打印确切的 git filter-repo 命令,请在轮换密钥后谨慎手动执行。
安全限制:从不提交密钥、从不强制推送、从不自行改写历史。--fix 只做取消跟踪/忽略 .env、写 .env.example 和添加 LICENSE;--redact-code 仅编辑工作区,不提交任何内容。LICENSE 模板是占位性的(专有许可完整,MIT/Apache 仅为指引),是否选某许可证需自行确认。