当你已经推送了一个特性分支时,如何将本地主分支推送到Heroku?

6

为了尝试一个功能分支,我将其推送到Heroku的主分支(因为这是它用于您的网站的唯一分支),即:

git push heroku feature-foo:master

与此同时,我对本地主分支进行了一些提交。现在我想将本地主分支推回Heroku,但出现以下错误:

To git@heroku.com:foo-repo.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com:foo-repo.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. 

这很有道理,因为实际上Heroku的主分支确实是在我的功能特性分支feature-foo之上,因此超前于主分支。但我不想从Heroku拉取和合并 - 因为那将与合并我的功能特性分支feature-foo相同,而我不想这样做。现在,我只想推送我的本地主分支(master),而不带feature-foo的更改。(事实上,我已经使用了heroku rollback使feature-foo的更改没有在网站上发布。)
我该怎么做?
2个回答

15
答案很简单。进行强制推送,即:
git push -f heroku master

2
是的,事实证明,git并不是一个特别适合部署的工具。使用git部署到Heroku通常涉及到一些你不想在真正的git仓库中做的事情。 - Fitzsimmons
你遇到的问题是其他人在主分支上发布了内容,而你的进度落后了。这个解决方案会覆盖他们的工作,可能会在以后引起更多问题。 - Daemon Painter

0

您还可以前往Heroku仪表板并回滚到之前推送非主分支的构建版本。

访问dashboard.heroku.com/apps/your-app-goes-here/activity

一旦进入,您应该会看到:

enter image description here 单击要回退的构建版本上的Roll back to here。一旦回滚到正确的构建版本,您就可以从主分支推送而无需使用强制命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接