2012-06-08 103 views
7

我正在使用Heroku并且有一个稳定的Rails应用程序(生产环境),所以我想创建一些新的东西,我可以在那里获得质量保证env,我可以看到这些更改是如何工作的在Heroku上(以及对版本的聚合增强功能),而不总是推送到我的产品应用程序。在Heroku上推送Git错误

因此,我所做的是创建一个新的Heroku应用程序,并在本地创建一个新的分支(dev)。我的意图是在我测试新的Heroku QA应用程序的变化后,将开发人员合并到本地,然后从主分支中推送到Heroku制作。

我的方法对我的风景可能不好,我是一个新手,所以这只是我如何做到这一点的最佳猜测。

但是,当我将我的开发分支推送到我的新QA应用程序时,它用于推送到QA应用程序的开发分支,但不是主分支。所以我无法看到(并测试)我在新QA应用程序上所做的更改。这似乎是在告诉我,我只能推主分支我的QA应用程序的高手,因为我已经退出,一切都已经起床了最新的,但我收到此错误:

Pushing to [email protected]:foobar/QA.git 
To [email protected]:foobar/QA.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:foobar/QA.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
hint: before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

灿有人请帮我弄清楚我在做什么错了 - 无论是在我的环境中还是在Git中?谢谢。

+0

你在问关于Heroku,但你的错误消息说Github。确保你推到正确的地方。 – matt

回答

20

Heroku应用程序只能从应用程序库的主分支(本地到Heroku)运行。如果您想将分支部署到不是您本地回购的主分支的Heroku,那么您需要指定它。在你的情况下,它会像git push qa-remote dev:master(将qa-remote替换为QA应用的远程实际名称),它表示将我的本地开发分支推送到qa-remote上的主分支。

当你第一次这样推,你可能需要添加-f标志来强制推送(非快进)。随后,只要您的本地分支是最新的,您应该可以在没有-f标志的情况下推送。

+0

正是我在找的,谢谢! – yellowreign

22

尝试使用-ff(快进)选项推送:git push heroku master -ff(用实际名称的heroku遥控器替换heroku)。

+1

似乎必须有更好的方法。由于多个开发人员正在开发应用程序,如果有更好的设置或其他方式来实现而不是快进,我认为这会更好。 – yellowreign