【问题标题】:How to hide personal info from a publicly shared GitHub?如何从公开共享的 GitHub 中隐藏个人信息?
【发布时间】:2015-11-12 04:05:38
【问题描述】:

我在 GitHub 上分享我的 Java 项目(因为我相信开源代码并且没有隐藏的技巧)。无论如何,我有一个独特的 UserAgent,我是从一个网站获得的用于 API 使用的......我想知道如何在不让我的项目私有的情况下从 GitHub 隐藏它...... 我能做些什么? 我尝试搜索谷歌,但似乎没有人有同样的问题。我不能使用单独的文件,然后将其添加到 .gitignore,因为在部署项目时它不起作用。请帮忙!

【问题讨论】:

  • 我认为,您应该将唯一的 UserAgent 设为可配置参数和/或从配置文件中读取,而不是将其硬编码到源代码中。
  • 是的,我打算把它切换到一个配置文件,问题是它仍然会在github上公开显示,我不知道你怎么可能隐藏它......
  • 你首先不应该将配置文件推送到 GitHub。您不应该发布您的个人配置文件的实际内容,而是最多提供一个带有您的源的配置文件示例(这样做的正确方法是提供配置文件的文档,让任何人使用您的资源来生成适合其环境的配置文件)。
  • 此外,如果您从项目树中的某个位置读取它,您应该将真正的配置文件添加到.gitignore。这样,您(或其他贡献者)就不会不小心将其添加到 git add .

标签: java git github


【解决方案1】:

我想知道如何在不将我的项目设为私有的情况下从 GitHub 中隐藏它

你不能将这些信息推送到 repo。

您可以做的是声明一个 content filter driver,它会在结帐时检查它是否可以访问私有信息源(在您的公共存储库之外的其他地方,可能在 GitHub 之外的其他地方),并生成正确的文件(保持私有,并在 .gitignore 中声明)。

该内容过滤器驱动程序在 .gitattributes 中声明,并采用模板文件(它是版本化的,但本质上不包含任何值),并将生成完整的文件:

  • 默认值(如果未找到私有数据的来源)
  • 敏感值(如果脚本可以访问私有信息源)

【讨论】:

  • 问题是我需要将我的 Unique UserAgent 提供给所有用户而不是模板,因为 UserAgent 只提供给我必须申请的开发人员。
  • @RWEQX 这没有多大意义。如果它只提供给开发人员并且你必须申请它,你怎么可能将它提供给所有用户?我的意思是,它真的意味着提供给用户,还是应该只由拥有这样一个个人密钥的开发人员使用?
【解决方案2】:

按照 cmets 的建议:将此信息放入配置文件中。

这里是an example:这个javascript项目提供了一个config.js.template文件,但应用程序需要一个config.js文件(即gitignored)。如果此文件不存在,则模板 is copied。 这样,即使用户没有花时间先编写自己的配置,它也会以合理的默认值运行。

此外,由于您说您计划“切换”到配置文件,我猜这些个人配置值当前在您的代码中。所以不要忘记在推送到 github 之前清理你的旧提交!

【讨论】:

  • 我不能这样做,因为我拥有的 UserAgent 需要访问该网站。 (它不是每个人都能获得的开发密钥).. 所以我不介意其他人使用我的密钥,但我不能让他们在自己的程序中复制和使用它,所以我希望隐藏密钥
【解决方案3】:

只需使用 GPG 加密机密信息并签署您的标签。

【讨论】:

  • 并在你想用的时候解密:
  • 那么我的用户将如何使用它?
  • 向合法用户发送解密密钥
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2021-04-07
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
相关资源
最近更新 更多