我有一个 git 存储库,其中包含一些可能硬编码或正式硬编码的敏感数据的文件,这些数据现在位于 git 历史记录中的某些位置。
为了使项目公开可用,以便具有相似兴趣的程序员可以从中受益并回馈更改,我想分叉它以清理有问题的文件。
我考虑的程序如下:
- Shallow/Shared 将 repo 本地克隆到新的本地位置,此文件夹将成为公共变体。后续步骤在新的 repo 中。
- 将master分支到一个分支
public-master
- 删除所有其他分支引用。
- 消毒
public-master
- 壁球
public-master
git reflog expire --expire-unreachable=now --all && git gc --prune=all --agressive
删除所有无法访问的引用,现在是任何不在公共分支中的 objgit push
将公共主服务器添加回上游到私有存储库中。- 将 origin 远程设置为公共 repo url,分支到
master
. 推到原点。
这足以清理我的回购,还是可以在此之后恢复敏感数据。有没有更明智和通用的方法来解决这个问题?有没有多余的步骤?
例如,我可以在一个存储库中完成所有这些操作,还是 git-packs 的性质意味着我可能仍会推送obj
包含敏感信息的内容?