我有一个带有裸 git 存储库的服务器,我推送到该存储库以进行实时部署。它有一个简单的post-receive
钩子,可以用最新的master
.
当在生产服务器上发现错误时,我有时需要恢复到特定的过去提交(我在本地测试自己,但我没有捕获所有内容)。有没有一种很好的*方法可以通过此设置恢复到过去的提交?
*我说的好,我的意思是像推送到裸存储库这样的单行代码:git push prod master
如果您想在历史记录中保留您的错误,这将添加补偿您指定的提交的提交。(master必须在本地签出)例如,如果你想恢复最后一次提交,你可以使用:
git revert master
git push origin master
如果要从历史记录中删除最后 2 次提交(必须在本地签出 master):
git reset master~2
git push -f origin master
或者在不更改任何本地内容的情况下,这也应该有效:
git push -f origin master~2:master
最后两个将强制更新 master 到最后一次master
提交的第三个。如果其他人已经撤消了您要删除的提交,这将是有问题的。