隐藏github公共仓库中的API密钥



我正在寻找一种方法来防止api密钥等在公共repo中结束。(地址不重要)

所以我理解常见的解决方案是将包含api密钥的文件添加到.gitignore,这样它基本上就不会被提交到repo。

问题是我宁愿提交文件,但将密钥本身替换为'YOUR API key HERE'之类的文本。

我发现这个答案建议使用git过滤器分支,但它似乎真的是命中或错过,并不是真正推荐。

还有其他方法可以实现这个吗?有什么方法可以确保git过滤器分支实际工作吗?有办法追溯吗?应该在git add之后还是之前完成?

您建议的是合理的方法:使用配置文件和填充符或占位符数据创建模板文件,然后将其复制到您想要的位置,该位置在.gitignore中列出。如果您愿意,您可以使用一个脚本来生成文件,并将API密钥作为命令行参数或从环境中提供。

另一种方法是始终从环境中导入配置,根本不将配置写入磁盘。在许多环境中,这可以使用像Vault这样的加密秘密存储来完成,但也有其他选择。

这两种方法根本不会提交秘密,所以您不必担心它们最终会出现在代码库中。如果它们已经在代码库中,那么您需要使用git filter-branch或类似的工具来过滤它们,或者只是旋转它们并假设旧的值被破坏(您可能应该首先假设)。

你读过.git/info/exclude吗?它在与gitignore相同的管理页上进行了描述,并且基本上允许您在repo级别本地指定不希望被Git看到的模式。这里的模式语法与.gitignore中的相同。

这将允许您最初提交占位符配置文件,然后您将在本地修改.git/info/exclude。然后,您可以安全地将实际的API密钥放入该文件中-当您这样做时,运行git status以确认您的配置文件更改被排除在外。

这里还有一个关于这个的问题。