当前状态:我将包含内部数据库凭据的文件提交到我的Git存储库.这很好,因为我一个人使用它.然后我的小组开始在这个项目中克隆,推送和拉动.我们现在有几个Git存储库(一个中心和一些开发人员).
问题:我们现在想要公开访问源代码和Git存储库,或者至少让Git管理其他对代码有贡献的细节.
问题是:什么是一个好的策略
a)使用来自中央或所有存储库的凭据删除文件,或
b)建立一个新的Git存储库作为外部世界的"接口"?
如果选择(b),我们如何轻松地将更改传回主存储库?
由于已经广泛分发,我们真的不想在每个当前的存储库上执行git rebase或者不执行操作git filter-branch.
抱歉,git filter-branch如果您想从主存储库中删除凭据,那么您将无法继续运行.请参阅GitHub上的人员编写的删除敏感数据.
由于git的设计,没有办法强制现有的克隆从各自的历史中删除文件.
您可以清理单个分支并使其成为未来开发的基础:
$ git checkout -b old-master master
$ git filter-branch ... master
Run Code Online (Sandbox Code Playgroud)
现在,您需要将已清理的主服务器推送到仅包含干净主服务器的新存储库:
$ git push new-central master
Run Code Online (Sandbox Code Playgroud)
git cherry-pick如有必要,现有的repos可以将新的远程数据库和旧分支的更改添加到新的干净主数据库中.
对于新的存储库,设置某种屏障以防止有人将敏感数据推送到它,这样你就不会再遇到同样的问题了.这个障碍可能是一个人控制新的中央存储库并审查所有补丁来决定进入的内容.