15

我正在使用 Heroku 并且有一个稳定的 Rails 应用程序(生产环境),所以我想创建一些新的东西,在那里我可以有质量保证环境,我可以看到更改将如何在 Heroku 上工作(以及聚合增强发布)而不总是推送到我的生产应用程序。

所以我所做的是创建一个新的 Heroku 应用程序,并在本地(开发)创建一个新分支。我打算在我的新 Heroku QA 应用程序上测试更改后,将 dev 合并到本地的 master 中,然后从我的 master 分支推送到 Heroku 生产。

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

但是当我将我的开发分支推送到我的新 QA 应用程序时,它可以推送到 QA 应用程序的开发分支,但不能推送到主应用程序。所以我无法在新的 QA 应用程序上看到(和测试)我的更改。似乎在告诉我,我只能将主分支推送到我的 QA 应用程序的主分支,因为我已经拉取并且一切都已经是最新的,但是我收到了这个错误:

Pushing to git@github.com:foobar/QA.git
To git@github.com:foobar/QA.git
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com: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?谢谢你。

4

3 回答 3

38

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

于 2012-06-08T20:48:21.823 回答
26

Heroku 应用程序仅在应用程序存储库的主分支(Heroku 本地)之外运行。如果你想将一个分支部署到 Heroku,它不是你本地 repo 的主分支,那么你需要指定它。在您的情况下,它类似于git push qa-remote dev:master(将 qa-remote 替换为您的 QA 应用程序的远程实际名称),这表示将我的本地 dev 分支推送到 qa-remote 上的主分支。

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

于 2012-06-08T21:26:17.917 回答
1

使用以下命令强制推送更新git push -f heroku master

于 2019-04-15T20:00:06.743 回答