2017-06-03 191 views
7

我想推送一些代码给GitHub。它包含一些我不想发布的私人API密钥。有什么办法可以自动隐藏它吗?我应该手动从我的代码中删除它吗?如何将代码推送到Github隐藏API密钥?

+2

切勿提交任何包含您不希望他人看到的信息。 –

回答

6

您应该考虑使用.env文件并从环境变量中读取密钥。如何操作取决于您使用的语言和工具(对于node.jsphp等)。

通过将.env添加到.gitignore,您可以排除.env文件。您也可以上传一个示例配置.env.example与虚拟数据或空白来显示您的应用程序需要的架构。

5

无论如何,在代码中使用API​​密钥可能是个坏主意。这意味着任何想要使用你的代码的人都必须编辑代码并重新编译它。

此类用例的教科书解决方案是将凭据移动到某个配置文件,并在README.md文件中添加有关配置文件的结构和位置的明确文档。您也可以在您的gitignore文件中添加一个条目,以防止您(和其他人)错误地将您的私人信息推送到GitHub。

2

您可以在您的服务器中添加enviornment variables以隐藏您的API密钥。所有流行的编程语言都有默认方法来访问环境变量。

3

任何时候你有一个合理的数据文件,如

config.yml 

不能提交他们在您的仓库。我会告诉你一个例子。

假设有一些用户名和密码YAML文件:

# app/config/credentials.yml 
credentials: 
    username: foo 
    password: bar 

如果你想隐藏foobar values, remove this file from your repository, but add just a distribution`文件,旨在维护用户名和密码字段,但没有真正的价值:

# app/config/credentials.yml.dist 
credentials: 
    username: ~ 
    password: ~ 

在安装过程中,你可以得到这个文件,复制到app/config/credentials.yml.distapp/config/credentials.yml

此外,请记住将app/config/credentials.yml添加到您的.gitignore文件中。

它同样为API密钥:

# app/config/config.yml 
config: 
    credentials: 
     username: foo 
     password: bar 
    api_stuffs: 
     api_foo: fooooo 
     api_secret: baaaaar 
     api_token: tooooken 

这适用于配置文件,并为每一个你需要共享一个配置的结构,但不理智的数据时,可以节省你的良好格局。 Ini文件,配置等等。

+0

感谢您的信息。 :) –

+0

请解释downvote O_o – sensorario