如何将不同的本地Git分支推送到Heroku / master

Heroku的政策是忽略所有分支,但“主人”。

虽然我确信Heroku的设计人员对这个策略有很好的理由(我在猜测存储和性能优化),但我作为一名开发人员的后果是,无论我可能在做什么本地主题分支,我都想要一个简单的方法将Heroku的主人切换到该地区的主题分支,并使用“git push heroku -f”来覆盖Heroku上的主人。

通过阅读http://progit.org/book/ch9-5.html的“推送参考资料”部分得到的是

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

我真的很喜欢的一种方法是在配置文件中进行设置,以便“git push heroku”始终执行上述操作,用当前分支所在的名称替换local-topic-branch。 如果有人知道如何做到这一点,请让我知道!

对此的警告当然是,如果我是唯一可以推送到Heroku应用程序/存储库的人,这只是明智之举。 测试或QA团队可能会管理这样一个存储库来尝试不同的候选分支,但他们必须进行协调,以便他们都能在任何特定日期同意他们推送到哪个分支。

不用说,拥有一个单独的远程仓库(如GitHub)也是一个非常好的主意,没有这个限制来支持所有的事情。 我会把这个叫做“origin”,并使用“heroku”作为Heroku,这样“git push”总是将所有东西都支持起源,而“git push heroku”将我目前正在使用的任何分支推送到Heroku的主分支上,如有必要。

这会工作吗?

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

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

至于抓取,我并不在乎Heroku存储库是否是只写的。 我还有一个单独的存储库,比如GitHub,用于备份和克隆我的所有工作。

脚注:这个问题与使用Heroku的分支策略的Good Git部署相似,但不完全相同?


使用通配符时,它必须位于refspec的两侧,因此+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

请参阅https://devcenter.heroku.com/articles/git#deploying-code

$ git push heroku yourbranch:master

git push -f local_branch_name:master
链接地址: http://www.djcxy.com/p/8633.html

上一篇: How to push different local Git branches to Heroku/master

下一篇: making a git push from a detached head