【发布时间】:2012-02-02 01:35:26
【问题描述】:
我正在通过 git 在 Heroku(目前)上部署一个 Rails 应用程序,并且还希望有一个公共版本供人们查看。有些文件是敏感的,应该只提交和推送到“heroku”分支,而不是“公共”分支。 最好的方法是什么?
(我确实知道 Heroku 的 Config 变量,它作为临时解决方案非常棒,但在我需要切换主机时并不好玩。)
这两个分支不需要一直同步 - 我可以定期将“master”分支合并到“public”分支并分别推送到 github。
我尝试了各种方法:
分离
.gitignore文件和“我们的”合并策略 - 起初这不起作用,在搞砸了一段时间后,我觉得它变得太复杂了,所以我可以实现一个看似简单的任务使用自定义
exclude文件,并将以下内容添加到.git/config... 这根本行不通:
.git/config
[branch "public"]
excludesfile = +info/exclude_from_public
让私有和公共存储库共享相同代码但忽略公共存储库中的敏感文件的最佳方法是什么?
您可以假设没有代码被提交或推送,即这是一个新初始化的存储库。
(以前曾以各种形式提出过这个问题,但没有一个答案是直截了当的,或者答案似乎真的很老套。我只是在这里以一种非常简单的方式提出这个问题,并希望收到一个非常简单的回复。)
【问题讨论】:
-
可以删除公共分支的文件吗?
-
是的,但是这样我会与
.gitignore发生合并冲突,当我运行git merge master时,文件将被添加回public分支 -
如果你有信心使用多个版本控制系统,你可以使用 darcs/mercurial/svn/bzr/whatever 作为私有分支,并选择性地推送到 git。
-
您需要隐藏哪些具体文件?也许我们可以建议一种更简单的方法来解决这个问题,例如使用 Heroku 配置变量。
-
@Emily initializers/secret_token.rb,以及一些包含一些加密信息(管理员登录和 s3 凭据)的 YAML 文件
标签: git version-control