0

我在最近的生产中遇到了麻烦(嗯,实际上是分期,但我们将继续称其为“生产”)部署。

我想(阅读:需要)将部署回滚到以前的提交。实际上,我想返回一个方法,然后cap deploy一个一个地向前推进每个提交,直到我看到问题成为现实。我知道我可以cap -S revision=8c9ffa787b22cff019b27f71194637aa85506f9c deploy用来部署特定的提交。

我的问题是,当我找到我想要坚持的提交时,我如何重置HEADandmaster等等,以便基本上 master 指向该提交,理想情况下,所有后续提交都被捕获在某个名称的新分支中,比如说rabbithole?

需要在不污染开发中的 git repos、GitHub以及Capistrano在生产服务器上自动创建的情况下执行cached-copy此操作。

希望我说得通。如果没有,请询​​问更多信息。

谢谢!

4

2 回答 2

1

我会说你想恢复你稳定提交和你 HEAD 之间的所有提交。检查这个

git checkout master
git revert XXSHAXX..HEAD

其中 XXSHAXX 是您的稳定提交。这将创建一堆新的提交——稳定后每个提交一个。结果,您将拥有一个新的提交,相当于您在 HEAD 中稳定,并且您的任何历史都不会丢失。

PS,你不会被在同一个仓库工作的其他人打败。

于 2013-09-26T23:43:56.900 回答
0

回滚到之前的提交

cap deploy:rollback

回滚到以前部署的提交

cap deploy:rollback:code

一旦你找到了一个你想保留在 master 中的提交,你就可以做一个 rebase。不确定这是否是最佳途径,因为您应该始终警惕强制更新 master。

我会暂时更改我的staging环境从中提取的分支,而不是在上游主服务器上推送强制更新。

好的,除了警告:

$ git checkout master; git checkout -b master-backup-before-rebase; git checkout master

可能有更快/更简单的方法来做到这一点,但我们基本上确保我们在master,创建一个名为的新分支master-backup-before-rebase,然后返回 master。

$ git rebase -i head~XXX

将 ~XXX 替换为您要删除的提交次数 + 1。

接下来,将打开一个文本编辑器窗口 - 删除您要删除的所有提交的行。保存并关闭窗口。

$ git push origin master -f

瞧。

对此要非常小心,并确保您的备份分支在变基之前存在,以免您由于未提交的本地更改或其他原因意外留在主分支上。

于 2013-09-26T22:39:09.587 回答