我在生产服务器上设置了一个裸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中吗?
答案 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