繁体   English   中英

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

[英]Git revert last commit in heroku

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

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

git reset --soft HEAD^ 

但是当我向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.

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

如果你在本地还原了提交,你可能需要使用-f选项git push来强制提交。

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

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

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

$ heroku rollback
Rolled back to v51

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

$ heroku rollback v40
Rolled back to v40

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

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

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

  3. 然后像往常一样推。

这就是我做的。 首先,我使用旧提交创建了一个新分支:

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

然后我运行push -f本地仓库中的旧分支到heroku的主人:

git push -f heroku old-rev:master

当我完成旧版本并准备进入新版本时:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM