当你有密钥时让 Git 项目开源

Posted

技术标签:

【中文标题】当你有密钥时让 Git 项目开源【英文标题】:Making a Git project open source when you have secret keys 【发布时间】:2011-05-05 08:00:05 【问题描述】:

我在 GitHub 上有一个位于私有存储库后面的项目。我想公开回购。但是,我的项目使用密钥。

如何在保护这些密钥的“历史”的同时公开项目?我猜我是 SOL,应该简单地使密钥无效以防止它们被使用。

请注意,这不是同一个问题 How to open-source an application that uses API keys

How to handle 'open-sourcing' your application, when it uses a personal API key?

由于我的项目已经在 Git 上,因此可以轻松查看整个源代码历史记录。我想我可以做的是在隐藏 API 密钥的情况下分支一个单独的项目,并将该 repo 公开。但随后用户会错过整个分支历史,他们可能会对此感到好奇(我知道我会)。

【问题讨论】:

【参考方案1】:

您可以使用像git filter-branch 这样的锤子从存储库中删除密钥。 GitHub's help pages 上有很好的解释。

【讨论】:

我的密钥例如在 settings.py 中。解决方案是从整个历史记录中删除该文件,然后在没有秘密信息的情况下重新提交它吗? 这是最简单的选项,也是链接页面上解释的选项。但是传递给git filter-branch 的命令基本上可以做任何你想做的事情,例如通过sed 传递文件。【参考方案2】:

我使用了一个新的 .gitignore,它已经排除了所有私有内容/密钥并将所有内容复制到一个新的存储库中。如果我需要再次访问旧的 git 历史记录,我已经留下了一份副本。

【讨论】:

【参考方案3】:

查看git-castle (https://www.npmjs.com/package/git-castle)!

您可以将贡献者添加到您的白名单并允许他们使用您的密钥。

【讨论】:

以上是关于当你有密钥时让 Git 项目开源的主要内容,如果未能解决你的问题,请参考以下文章

按下项目按钮时让本机“共享表”拉起

git

除了谷歌的TensorFlow,这些开源机器学习项目也很值得收藏!

当你从Git上拉下来的项目各种文件都不显示也没有报错

为开源项目创建虚拟 Fabric Api 密钥

如何在 git push 之前从 Android 项目中删除 API 密钥