使用BFG重写git历史记录后是否需要垃圾收集?

时间:2017-05-26 11:32:44

标签: git bfg-repo-cleaner

我们在我们的bitbucket存储库中提交了一些密码,这违反了我们的组织安全策略,因此我使用BFG Repo Cleaner通过在本地创建镜像替换所有密码已删除然后< / p>

 bfg --replace-text passwords.txt  my-repo.git

它完成了他们网站上描述的工作,密码确实被删除了!

令人惊讶的是它

  • 替换文件中的密码
  • 删除旧提交
  • 然后做一些新的提交 而不是根据旧提交重写历史....

所以问题是密码仍然可以从旧的bitbucket url查看,它指向旧的提交

我的问题是如何从bitbucket或git历史记录中删除已删除的提交?反过来停止URL指向已删除/旧提交显示我们要删除的密码?

1 个答案:

答案 0 :(得分:0)

解决方案是执行“git push --force ”,这将触发bitbucket的auto gc

然而gc可能会失败,bitbucket正在进行改进,如果发生这种情况,你必须手动在repo上运行命令作为管理员

git reflog expire --expire="1 hour" --all
git reflog expire --expire-unreachable="1 hour" --all
git prune --expire="1 hour" -v
git gc --aggressive --prune="1 hour"

注意:force push使远程控制与本地分支或master完全相同,从而确保在更改本地工作树期间没有其他开发人员在使用它。