Git恢复在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 (eg 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
我明白这个问题。 我应该如何继续? 我怎样才能恢复最后一个heroku提交? (我认为是最好的解决scheme)
如果你已经在本地恢复提交,你可能需要用-f
选项来强制提交。
另外,你可能想看看Heroku的发行版 ,这也可能有帮助。
从http://devcenter.heroku.com/articles/releases#rollback
使用rollback命令回滚到上一个版本:
$ heroku rollback Rolled back to v51
您可以select指定另一个版本来定位:
$ heroku rollback v40 Rolled back to v40
考虑到你已经推送到其他(公共)存储库,解决这个问题的最好的方法是可以撤销在本地的git reset
,然后做一个git revert
创build一个新的提交,扭转不良提交的影响。 然后再推一切。 所以一步一步:
-
所以首先
git reset --hard origin/master
或者git reset --hard heroku/master
(或者你的heroku追踪分支被调用),以便让你的本地master
回到糟糕的提交。 这将消除工作副本中的任何突出变化,所以要小心。 -
然后
git revert HEAD
创build一个新的提交(它会提示你一个提交信息)。 -
然后像平常一样推动。
这是我做的。 首先,我创build了一个新的分支与旧的提交:
git checkout -b old-rev <commit-id>
然后,我push -f
本地回购的老分支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