如何创建包含敏感数据的受限 Git 发布分支?

Posted

技术标签:

【中文标题】如何创建包含敏感数据的受限 Git 发布分支?【英文标题】:How to create a restricted Git release branch that contains sensitive data? 【发布时间】:2013-06-13 22:38:53 【问题描述】:

我有一个简单的网上商店,一些 php/html/css/js 文件。 Bitbucket 上的 master 分支实际上是一个开发分支,即开发人员推入它,然后我将更改拉到开发 Web 服务器,因为 Git 安装在我的共享主机上并且我在那里可以 SSH 访问。

问题是如何从中创建一个发布分支?我意识到我可以创建一个发布分支并在发布时从 master(实际上是开发)推送更改。

然而,问题是发布网站代码包含生产密码、商家 ID 等 - 所以我想对所有这些保密。如果我在同一个存储库中创建发布分支,那么我团队中的每个人都会看到这些敏感数据。

那么有什么解决办法呢?请注意,我是 git 初学者。

谢谢!

【问题讨论】:

我要研究的第一个问题是为什么需要在版本控制中存储这种类型的敏感数据。我认为这是一种潜在的设计气味。我不认为将它放在具有更严格访问控制的分支中会有多大帮助。我希望将版本保存在单独的存储库中并在两者之间推送,但这只能部分解决问题,因为有人可能会设法访问该存储库。 我完全同意蒂莫的观点。这种信息应该与您的代码分开存储在某个配置文件中。当然,可以对您的配置进行版本控制,但这更像是一种安全备份,并非所有人都可以访问。 您说得对,先生们:我在通宵阅读了很多资料后得出了同样的结论。不应将敏感数据存储在存储库中。 【参考方案1】:

如果您可以在任何 git repo 之外存储敏感信息,那么您可以在 git repo content filter driver 中注册。 这将包括:

模板文件 smudge script 在.gitattributes 文件中注册,这些模板能够: 从外部来源访问秘密值 根据当前环境生成具有正确值的实际配置文件(未进行版本控制并且对存储库保持私有)

【讨论】:

以上是关于如何创建包含敏感数据的受限 Git 发布分支?的主要内容,如果未能解决你的问题,请参考以下文章

您如何处理公共 git 存储库中的敏感数据?

如何配置Git支持大小写敏感和修改文件名中大小写字母呢?(转)

git删除已经提交的包含敏感信息的文件(还没提交到远程仓库)

git删除所有提交历史记录

github上传了配置信息

Git之清除历史记录操作