【问题标题】:Using github to host public git repositories whilst ensuring that sensitive data files remain untracked使用 github 托管公共 git 存储库,同时确保敏感数据文件不被跟踪
【发布时间】:2011-01-16 01:00:12
【问题描述】:

我的应用托管在 Heroku 上,我也有一个公共 github 存储库。

我的应用有一个配置文件,其中包含我的亚马逊 S3 凭据。确保文件被推送到 heroku 而不是 github,这一点很重要。

所以我想我可以将我的 master 分支推送到 heroku 并创建一个单独的 github 分支并确保它的 .gitignore 文件引用我的 s3.yml 文件。然后我可以执行“git push origin github:master”将 github 分支推送到 github.com

这适用于第一次提交。

然后我切换到我的 master 分支,编写了一些很棒的代码,然后将它们全部推送到 heroku。然后我切换回我的 github 分支并执行“git merge master”,以便将新代码添加到其中。但这会导致 master 分支中的 s3.yml 和 gitignore 文件被复制到 github 分支中。提示面对面的敲打会议。

关于如何保持分支同步,同时确保未跟踪的文件保持未跟踪,是否有任何建议。我可以告诉 git 不要合并不需要的 S3.yml 文件和不同的 .gitignore 文件吗?

我在这里鞭打一匹死马吗?我还不能证明为私人 github 帐户付费是合理的,但我想答案将涉及这样做......或切换到 projectlocker

我希望这个问题只是因为我的垃圾 git 技能,并且有办法....提前致谢

编辑::: 接受的答案是一个很好的解决方案,但我刚刚找到了一个我更喜欢的新答案。在这里阅读它:http://docs.heroku.com/config-vars - Heroku 的聪明人对所有事情都有答案......非常棒

【问题讨论】:

  • +1 为 heroku 的解决方案
  • 如果您只关心 S3 凭据等参数,Heroku config var 解决方案就可以工作。但是我可以看到一种情况,例如,您想使用相同的存储库进行开发和推送到 Heroku。你想将你的 node_modules 文件夹发送到 Heroku(因为建议让 Heroku 重建所有内容),而不是 Github 或 Gitlab。此外,在 Heroku 上,您可能有几个不需要部署才能工作的文件夹,例如预构建源代码。为此,您需要一个自定义合并驱动程序和多个分支。

标签: git github project-hosting


【解决方案1】:

您可以将“危险”文件完全从 git 中移出 - 例如将它们放在 ~/.yourapp 或类似的地方。 (这并不能真正直接回答问题,而是很多软件的功能 - .fetchmail、.ssh、...)并且允许其他用户也可以这样做。

【讨论】:

    【解决方案2】:

    但这会导致 master 分支中的 s3.yml 和 gitignore 文件被复制到 github 分支中

    您可以使用 自定义合并驱动程序 避免这种情况,这将确保 github 分支的 .gitignore 文件将始终保留其内容,而不是从 master 合并的文件。

    How do I tell git to always select my local version for conflicted merges on a specific file?

    【讨论】:

    • 谢谢!自定义合并驱动程序正是我想要的!顺便说一句,写得不错。
    • 请注意,这可能不是您想要的——分支的头部将包含正确的文件,但如果您使用 Git 进行合并,那么头部提交将有两个父级,两者无障碍。一个来自您的 github 分支,另一个来自 master 分支,仍然包含您的密码。
    【解决方案3】:

    如果你使用一个名为 heroku 的分支作为你的“替代主”分支(包含敏感数据),而你的旧主分支没有敏感数据,那么你总是可以这样做

    git merge master
    

    所以你可以将 heroku 分支推送到 heroku 而不是 master 分支。

    【讨论】:

    • 谢谢,但这仍然会导致同样的问题。如果我在新的 heroku 分支上开发,我总是需要将更改合并到 master (github) 分支中,这意味着配置文件会被复制过来,如果我在 master 分支上开发,那么我需要配置可用的文件,否则我的应用程序在开发过程中将无法运行。不过还是谢谢。
    【解决方案4】:

    在 SVN 中,这被称为“忽略文件”,所以我认为它在 GIT 中会类似 - 我不使用 GIT,所以不要在此引用我,但我在 GITHub 网站上找到了这个参考:

    http://github.com/guides/ignore-for-git

    希望有帮助

    【讨论】:

    • 我已经使用该链接上详述的方法有一段时间了,但无论如何感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多