我正在通过git在Heroku(现在)上部署一个Rails应用程序,并且还希望有一个公共版本供人们查看.有些文件是敏感的,只能在"heroku"分支中提交和推送,而不是"公共"分支.最好的方法是什么?
(我确实知道Heroku的Config变量,这是一个很好的临时解决方案,但是当我需要切换主机时却没那么有趣.)
这两个分支不需要一直同步 - 我可以定期将"master"分支合并到"public"分支并将其分别推送到github.
我尝试了各种各样的事情:
单独的.gitignore文件和"我们的"合并策略 - 这在一开始并不起作用,在搞乱了一段时间后我觉得它变得太复杂了,所以我可以实现一个看似简单的任务
使用自定义exclude文件,并将以下内容添加到.git/config...这根本不起作用:
的.git /配置
[branch "public"]
excludesfile = +info/exclude_from_public
Run Code Online (Sandbox Code Playgroud)
使私有和公共存储库共享相同代码但忽略公共存储库中的敏感文件的最佳方法是什么?
您可以假设没有提交或推送任何代码,即这是一个刚刚初始化的存储库.
(之前已经以各种形式提出了这个问题,但没有一个答案是直截了当的,或者答案看起来真的很笨拙.我只是在这里以非常简单的方式提出这个问题,希望得到一个非常简单的回答.)
当你将代码保存在公共git仓库中时,如何处理秘密API密钥,哈希盐等敏感数据?
显然,将敏感数据保留在代码中会对其造成损害.
另一种解决方案是不对代码中的秘密信息进行硬编码,而是将其存储在独立文件中并对文件进行gitignore.这样做的缺点是,当有人第一次提取您的代码时,秘密信息将会丢失,并且不会开箱即用.这可以通过在代码中编写"初始化,如果缺少"例程来解释,但是然后你让git系统滑入你的代码,这对IMO来说不是一件好事.
另一个解决方案是制作一个"默认"秘密信息文件,在项目开始时提交它,然后使用您自己的信息而不提交它.但这可能会让git抱怨你在拉动时有未提交的更改.
那么处理这个问题的常用方法是什么?
是否可以跟踪本地存储库中的文件夹和文件,但不能跟踪远程控制器上的文件夹和文件,以便在推送更改时,它们不会被远程推送?原因是我正在使用Beanstalk来部署我在本地工作的网站.我的本地仓库包含艺术品和其他内容的文件夹,我希望能够在本地跟踪更改,但不希望最终在生产服务器上.