如何在Heroku上保留配置文件但从GitHub公共仓库中删除?

5
我正在测试一个部署在Heroku上的应用程序,并尝试使用NewRelic进行监控。
我有两个远程仓库,一个是公共的Github repo(origin),另一个是Heroku。
在包含newrelic.yml文件的情况下,将代码推送到Heroku后,我想能够将更改推送回origin,但不包括newrelic.yml文件,因为它包含license_key。
我尝试将config/newrelic.yml放入.gitignore中,但它仍然会跟踪该文件并将其推送到origin。然后我尝试删除该文件,但无法得到干净的"git status"。
我尝试使用rm config/newrelic.yml,但即使将其放入.gitignore中,下次推送到Heroku时它也会从Heroku中删除该文件,导致NewRelic监控停止。
我在SO上看到了其他类似的问题,并得到了关于Heroku配置变量的答案https://devcenter.heroku.com/articles/config-vars,但如果这与删除github的配置文件有关,则不理解。
谢谢。
1个回答

9

Heroku会从Github获取你的所有文件,每次推送都会用新的文件替换原有文件。我认为你无法像这样做。

如果你将文件放在.gitignore中,就无法将其推送到Heroku。

解决方法可能是在Github上使用分支,在主分支上保留没有配置文件的代码,在“Heroku”分支上添加文件并将其用于在Heroku上进行推送。


显然,.gitignore不能忽略文件的删除。我先设置了Heroku,然后创建了Github仓库并将其添加为远程仓库。我的想法是,既然文件已经存在于Heroku上,我会将其添加到.gitignore中,删除该文件,推送到新创建的Github仓库,下次推送到Heroku时就不会有影响,因为对文件的更改被忽略了。你可能是对的,两个单独的分支是解决方案。我认为我可以在本地完成这个操作,而不必让该分支出现在Github的分支下拉菜单中,对吗? - isimmons
好的,分支是解决方案。无论如何都很有道理。添加了Heroku分支,从主分支中删除了文件并将其推送到GitHub,然后在Heroku分支中重新添加了该文件并将其推送到Heroku:主远程分支。现在一切都很好。谢谢Erowlin。 - isimmons
当我们从Heroku分支进行推送时,应该使用git push heroku master还是git push heroku <branch-name>? - ChickenWing24
git push heroku <branch_name>。 这里有一些不错的信息 https://www.atlassian.com/git/tutorials/syncing/git-push。 在Marcel,我们使用多个环境和多个分支,所以例如我想将分支“feature/my_new_feature”推送到“sandbox”,我会执行 git push heroku-sandbox feature/my_new_feature:master 这告诉Heroku将其推送到远程主分支。 - Erowlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接