我有一个带有裸git存储库的服务器,我推送到实时部署。它有一个简单的post-receive
挂钩,用最新的master
更新我的服务器代码。
当生产服务器上发现错误时,我有时需要恢复到特定的过去提交(我在本地测试自己,但我没有抓到所有内容)。有没有一种很好的*方法可以通过此设置恢复到过去的提交?
*很好,我的意思是像推送到裸存储库的单行:git push prod master
答案 0 :(得分:5)
如果您想在历史记录中保留错误,这将添加补偿您指定的提交的提交。 (必须在本地签出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
提交的第三个。如果其他人已经撤消了你要删除的提交,那么这是有问题的。