2

我有一个带有裸 git 存储库的服务器,我推送到该存储库以进行实时部署。它有一个简单的post-receive钩子,可以用最新的master.

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

*我说的好,我的意思是像推送到裸存储库这样的单行代码:git push prod master

4

1 回答 1

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 到最后一次master提交的第三个。如果其他人已经撤消了您要删除的提交,这将是有问题的。

于 2013-07-01T21:57:55.897 回答