Git还原了heroku中的最后一次提交

Mar*_*tin 48 git heroku

我做了一下,把它推到了原点和heroku

然后我意识到这是错的,所以我做到了

git reset --soft HEAD^ 
Run Code Online (Sandbox Code Playgroud)

但是当我向Heroku推进时,我正在努力

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.
Run Code Online (Sandbox Code Playgroud)

我理解这个问题.我该怎么办?我怎样才能还原heroku提交?(我认为这将是最好的解决方案)

Joh*_*non 66

如果您在本地恢复了提交,则可能需要git push使用-f强制提交的选项.

此外,您可能想看看Heroku版本也可能有所帮助.

  • `heroku release`是无价的,正是我所需要的.还显示`heroku rollback`,非常有帮助! (16认同)
  • `heroku release`很酷,但回滚并尝试推送对我来说不起作用.相反,我只是用`--force`推,这就是诀窍. (3认同)

Dev*_*evi 45

来自http://devcenter.heroku.com/articles/releases#rollback

使用rollback命令回滚到上一版本:

$ heroku rollback
Rolled back to v51
Run Code Online (Sandbox Code Playgroud)

您可以选择指定另一个要发布的版本:

$ heroku rollback v40
Rolled back to v40
Run Code Online (Sandbox Code Playgroud)


Dav*_*ell 9

鉴于您已经推送到其他(公共?)存储库,解决此问题的最佳方法可能是撤消git reset本地,然后执行a git revert创建一个新的提交,以反转错误提交的影响.然后再推一切.所以一步一步:

  1. 所以首先git reset --hard origin/mastergit reset --hard heroku/master(或任何你的heroku跟踪分支被调用),以便让你的本地master回来糟糕的提交.这会消除您工作副本中的任何未完成的更改,因此请小心.

  2. 然后git revert HEAD创建一个新的提交(它将提示您提交提交消息).

  3. 然后像往常一样推.