使用部署挂钩回滚git存储库

时间:2014-02-14 03:34:56

标签: git deployment

我在生产服务器上设置了一个裸git存储库,它使用post receive hook来部署我推送的任何内容:

#!/bin/sh
GIT_WORK_TREE=/path/to/webroot git checkout -f

部署我做

git push production

从我的工作站,一切都得到了照顾。但是我说我推送了一个破坏某些内容的提交,我想尽快恢复。将做以下工作:

git push production [id of commit to revert to]:master

IE仍然可以正确地将所有内容部署到webroot中吗?

1 个答案:

答案 0 :(得分:2)

这应该按预期工作。您可能需要执行git push +<commit>:master(注意+)以替换生产主机的HEAD上的错误提交。

+<commit>:master是refspec,有关refspecs的更多信息,请参阅git push manpage

我建议更明确地恢复,而不需要通过执行以下操作强制推送到生产服务器:

git revert <commit to revert>
git push production

git reset --hard <commit to revert to>
git push -f production

请参阅How to revert Git repository to a previous commit?