如何将不同的本地Git分支推送给Heroku/Master

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (9)
  • 关注 (0)
  • 查看 (341)

Heroku的策略是忽略除“主节点”之外的所有分支。

虽然我确信Heroku的设计人员有很好的理由来执行这个策略(我猜测是为了存储和性能优化),但作为开发人员,我的结果是,无论我从事什么本地主题分支工作。我想要一种简单的方式,将Heroku的主节点切换到本地主题分支,并在Heroku上做一个“git Push Heroku-f”来重写主节点。

我从阅读“推送刷新”一节中得到了什么http://prinit.org/book/ch9-5.html

git push -f heroku local-topic-branch:refs/heads/master

我真正想要的是一种在配置文件中设置这一设置的方法,这样“git Push Heroku”总是可以完成上面的操作,替换局部主题分支不管我现在的分支是什么。如果有人知道如何做到这一点,请告诉我!

当然,这方面的背景是,只有当我是唯一一个能够推动Heroku应用程序/存储库的人时,这才是明智的。测试或QA团队可能管理这样的存储库来尝试不同的候选分支,但是他们必须进行协调,以便他们在任何特定的一天都能就自己要推到哪个分支上达成一致。

不用说,拥有一个单独的远程存储库(比如GitHub)也是一个非常好的主意,而没有这种支持所有内容的限制。我把它称为“起源”,并使用“Heroku”作为Heroku,这样“git Push”总是将所有的东西都备份到原点,而“git Push Heroku”则将我目前在Heroku的主分支中的任何分支推送到Heroku的主分支,如果有必要,将其覆盖。

这个有用吗?

[remote "heroku"]
    url = git@heroku.com:my-app.git
    push = +refs/heads/*:refs/heads/master

在我开始实验之前,我想听听更有经验的人的意见,尽管我想我可以在Heroku上创建一个虚拟应用程序,并对此进行实验。

至于获取,我并不关心Heroku存储库是否是只写的。我仍然有一个单独的存储库,比如GitHub,用于备份和克隆我所有的工作。

标注:这个问题类似于好的Git部署使用分支策略与Heroku?

提问于
用户回答回答于

当使用通配符时,它必须出现在折射规范的两边,所以+refs/heads/*:refs/heads/master都没用。但你可以用+HEAD:refs/heads/master:

git config remote.heroku.push +HEAD:refs/heads/master

而且,您可以直接使用git push:

git push heroku +HEAD:master
git push -f heroku HEAD:master
用户回答回答于

我觉得应该是

push = refs/heads/*:refs/heads/*

替代。

用户回答回答于
用户回答回答于

最安全的命令是将不同的本地Git分支推到Heroku/Master。

git push -f heroku branch_name:master

注:尽管,您可以不使用-f进行推送,但建议使用-f(强制标志),以避免与其他开发人员的推送冲突。

用户回答回答于

还请注意,如果您使用git流系统和功能分支,则可能会调用

feature/mobile_additions

如果使用一个名为staging2的git控制器,那么要推到heroku的命令将是

git push stagingtwo feature/mobile_additions:master
用户回答回答于

你应该核实heroku_san,,它很好地解决了这个问题。

例如,您可以:

git checkout BRANCH
rake qa deploy

它还可以方便地拆分新的Heroku实例,将主题分支部署到新服务器上:

git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates

当然,如果你经常做一些事情,你可以做一些简单的搜索任务。

用户回答回答于

扫码关注云+社区

领取腾讯云代金券