开发者

Git revert last commit in heroku

I made acommit and pushed it to origin and heroku

Then I realised i开发者_如何学编程t was wrong, so I did

git reset --soft HEAD^ 

But when I'm pushing to Heroku Im getting

To git@heroku.com:app.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com:app.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

I understand the problem. How should I proceed? How can I revert also last heroku commit? (I assume would be the best solution)


If you've reverted the commit locally you may need to git push with a -f option to force the commit in.

Also, you may want to have a look at Heroku releases which may help too.


From http://devcenter.heroku.com/articles/releases#rollback

Use the rollback command to roll back to the last release:

$ heroku rollback
Rolled back to v51

You may choose to specify another release to target:

$ heroku rollback v40
Rolled back to v40


Given that you have already pushed to other (public?) repositories, the best way to fix this is probably to undo the git reset locally, then do a git revert to create a new commit that reverses the effects of the bad commit. Then push everything again. So step by step:

  1. So first git reset --hard origin/master or git reset --hard heroku/master (or whatever your heroku tracking branch is called), in order to get your local master back the bad commit. This will blow away any outstanding changes in your working copy, so be careful.

  2. Then git revert HEAD to create a new commit (it will prompt you for a commit message).

  3. Then push as you usually would.


Here's what I did. First, I created a new branch with the old commit:

git checkout -b old-rev <commit-id>

Then I ran push -f the old branch on the local repo to heroku's master:

git push -f heroku old-rev:master

When I'm done with the old version and ready to get to the new version:

git checkout master
git push heroku master
git branch -d old-rev  # deletes the old branch; warns if there will be data loss
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜