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

Heroku有一个忽略所有分支的政策,除了“master”。

虽然我确信Heroku的设计者有很好的理由采用这种策略(我猜是为了存储和性能优化),但对我来说,作为一名开发人员,无论我在做什么本地主题分支,我都希望有一种简单的方法将Heroku的master切换到本地主题分支,并执行“git push Heroku -f”来覆盖Heroku上的master。

我从阅读http://progit.org/book/ch9-5.html的“Pushing Refspecs”部分中得到的是

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

What I'd really like is a way to set this up in the configuration file so that "git push heroku" always does the above, replacing local-topic-branch with the name of whatever my current branch happens to be. If anyone knows how to accomplish that, please let me know!

The caveat for this, of course, is that this is only sensible if I am the only one who can push to that Heroku app/repository. A test or QA team might manage such a repository to try out different candidate branches, but they would have to coordinate so that they all agree on what branch they are pushing to it on any given day.

Needless to say, it would also be a very good idea to have a separate remote repository (like GitHub) without this restriction for backing everything up to. I'd call that one "origin" and use "heroku" for Heroku so that "git push" always backs up everything to origin, and "git push heroku" pushes whatever branch I'm currently on to Heroku's master branch, overwriting it if necessary.

Would this work?

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

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

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

脚注:这个问题类似于良好的Git部署使用分支策略与Heroku?< / >,但并不完全相同

170227 次浏览

我觉得应该是

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

而不是……

当使用通配符时,它必须出现在refspec的两侧,因此+refs/heads/*:refs/heads/master将不起作用。但是你可以使用+HEAD:refs/heads/master:

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

同样,你可以直接使用git推:

git push heroku +HEAD:master
git push -f heroku HEAD: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

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

git push -f heroku local_branch_name:master

看到https://devcenter.heroku.com/articles/git#deploying-code

$ git push heroku yourbranch:master

还要注意,如果你使用git流系统,你的特性分支可能会被调用

feature/mobile_additions

而使用名为stagingtwo的git远程,则push到heroku的命令将是

git push stagingtwo feature/mobile_additions:master

Heroku labs现在提供了一个github插件,可以让你指定要推送哪个分支。

请看Heroku关于这个测试版特性的文章。

你需要暂时注册成为beta测试者。

推送不同本地Git分支到Heroku/master的最安全命令。

git push -f heroku branch_name:master

注意:虽然,你可以不使用-f来push,但是建议使用-f (force标志)来避免与其他开发人员的push冲突。

对我来说,这很有效,

git push -f heroku otherBranch:master

建议使用-f (force标志),以避免与其他开发人员的推送发生冲突。由于您没有将Git用于修订控制,而只是将其用作传输,因此使用force标志是一种合理的做法。

来源:- 官方文档

git push heroku $(git branch --show-current):master

交替:

git push heroku HEAD:master

在2022年的某个时候,语法“git push heroku otherbranchname:master”不再对我有效。它总是会返回“最新的一切”。在查阅了Heroku的文件后,我发现&;master&;已被更改为“main”,所以现在的语法是这样的:

git push heroku otherbranchname:main