使用裸存储库挂钩将服务器恢复为过去提交

时间:2013-07-01 21:49:17

标签: git githooks git-bare

我有一个带有裸git存储库的服务器,我推送到实时部署。它有一个简单的post-receive挂钩,用最新的master更新我的服务器代码。

当生产服务器上发现错误时,我有时需要恢复到特定的过去提交(我在本地测试自己,但我没有抓到所有内容)。有没有一种很好的*方法可以通过此设置恢复到过去的提交?

*很好,我的意思是像推送到裸存储库的单行:git push prod master

1 个答案:

答案 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提交的第三个。如果其他人已经撤消了你要删除的提交,那么这是有问题的。