如何从Git/GitHub提交历史中彻底移除含敏感数据的文件?
彻底移除Git历史中的敏感文件
你的问题出在没有强制推送修改后的历史——Git默认不允许覆盖远程仓库的历史记录,所以你之前的普通推送并没有替换远程的旧历史。按以下步骤操作就能彻底清理:
先备份本地仓库,防止操作失误丢失数据
cp -r 你的项目目录 你的项目目录-backup重新执行
git filter-repo命令确保路径匹配(如果之前命令路径无误,这步可直接跳过)git filter-repo --invert-paths --path project/project-v1/secret.txt强制推送所有分支到远程仓库,覆盖旧历史
git push origin --force --all如果仓库有标签,也要强制推送标签,避免标签里残留旧历史
git push origin --force --tags
注意事项
- 所有协作者必须重新克隆仓库,不能再基于之前的本地分支提交,否则会把旧历史重新推回远程。
- 如果是公开仓库,之前的历史可能已经被第三方缓存或fork,这种情况无法完全消除所有副本,但主仓库的敏感数据会被清理。
内容的提问来源于stack exchange,提问作者dunxd
相关产品推荐
相关产品推荐

