我最近的一次制作遇到了麻烦(实际上,我们将继续称之为“生产”)部署。
我想(阅读:需要)将部署回滚到之前的提交。实际上,我想回过头来然后逐个cap deploy
逐一推进每个提交,直到我看到问题成为现实。我知道我可以使用cap -S revision=8c9ffa787b22cff019b27f71194637aa85506f9c deploy
来部署特定的提交。
我的问题是,当我找到提交时,我想坚持如何重置HEAD
和master
等等,这样基本上,master指向该提交,理想情况下,所有后续提交是在某个名称的新分支中捕获的,比如rabbithole
?
需要在开发中对git repos进行污染, GitHub ,然后 Capistrano 在生产服务器上自动创建cached-copy
。
希望我有意义。如果没有,请询问更多信息。
谢谢!
答案 0 :(得分:1)
我说你想恢复你稳定提交和你之间的所有提交。检查一下
git checkout master
git revert XXSHAXX..HEAD
XXSHAXX是您的稳定提交。 这将创建一堆新的提交 - 稳定后每个提交一个。因此,您将在HEAD中拥有与您相当的新提交,并且您的历史记录都不会丢失。
P.S。并且你不会被在同一个回购中工作的其他人打败。
答案 1 :(得分:0)
回滚到之前的提交
cap deploy:rollback
回滚到先前部署的提交
cap deploy:rollback:code
一旦找到了想要保留的提交,你可以做一个rebase。不确定这是否是最好的路线,因为你应该总是警惕强制更新master。
我会暂时更改我的staging
环境所在的分支,而不是在主上游推送强制更新。
好的,除了警告:
$ git checkout master; git checkout -b master-backup-before-rebase; git checkout master
可能有更快/更简单的方法来做到这一点,但我们基本上确保我们在master
上,创建一个名为master-backup-before-rebase
的新分支,然后返回到主。
$ git rebase -i head~XXX
将~X1替换为多次提交,您要删除+ 1。
接下来,将打开一个文本编辑器窗口 - 删除要删除的所有提交的行。保存,然后关闭窗口。
$ git push origin master -f
瞧。
要非常小心,并且确保您的备份分支存在,然后再进行变基,以免因为您有未提交的本地更改或其他原因而意外地留在主分支上。