我正在寻找一种方法来防止 api 密钥等出现在公共存储库中。 (它的托管地点实际上并不重要)
所以我知道常见的解决方案是将包含 api 密钥的文件添加到 .gitignore 中,这样它基本上永远不会被提交到 repo。
问题是我宁愿提交文件,但将密钥本身替换为“您的 API 密钥在这里”之类的文本。
我发现 this 的答案建议使用 git filter branch,但它似乎真的很受欢迎,并不推荐。
有没有其他方法可以实现这一目标?有什么方法可以确保 git filter branch 实际工作?有什么办法可以追溯吗?应该在 git add 之后还是之前完成?
答案 0 :(得分:0)
您建议的合理做法是:创建一个包含配置文件和填充符或占位符数据的模板文件,然后将其复制到您想要的位置,该位置在 .gitignore
中列出.如果您愿意,您实际上可以拥有一个脚本来生成文件并提供 API 密钥作为命令行参数或从环境中提供。
另一种方法是始终从环境中导入配置,而从不将配置写入磁盘。在许多环境中,这可以使用 Vault 等加密的秘密存储来完成,但也有其他选择。
这两种方法都根本不会提交机密,因此您不必担心它们最终会出现在代码库中。如果它们已经在代码库中,那么您需要使用 git filter-branch
或类似工具将它们过滤掉,或者只是旋转它们并假设旧值受到损害(您可能应该首先假设).
答案 1 :(得分:0)
你读过.git/info/exclude
吗?它在同一个 manpage as gitignore
中进行了描述,并且本质上允许您在存储库级别本地指定不想被 Git 看到的模式。此处的模式语法与 .gitignore
中的相同。
这将允许您最初提交占位符配置文件,然后在本地修改 .git/info/exclude
。然后,您可以安全地将实际的 API 密钥放入该文件中 - 执行此操作时,请运行 git status
以确认您的配置文件更改已被排除。
关于此here还有另一个问答。