情况
我们为我们的网站制作了一个特殊的促销版本,管理层要求它进行直播,我们做到了。假设从普通站点开始(为简单起见,将其称为 commit 0),我们花了 5 次提交来创建促销版本,并且所有这些提交都是在 master 上进行的(因此工作的促销站点是 commit 5)。
现在我们接到了紧急电话:最初给我们的促销日期是错误的,促销应该要到下周才能开始。请立即回滚到原站点。
假设以下
- 我们在 origin 上有一个接收后挂钩设置,它将实时推送它收到的任何提交。
- 我们需要该站点立即回滚以提交 0。
- 大约一周后,我们将再次需要对提交 5 进行的更改。
- 我们预计从现在到下周之间会添加一些错误修复。
问题
什么系列的 git 命令适合解决这个问题?
这是一个想法,我认为它会起作用,但似乎不是最理想的:
git branch promo
保存我们的促销工作以备后用git reset --hard 0
回滚到正常站点git push -f origin master
再次推送正常网站直播。我们需要“强制”标志,否则 git 会抱怨 origin 领先于我们的本地分支。- 在提交 0 之上的 master 上做一些错误提交,在一周内创建提交 6 和 7。
git merge promo
下周到来的git push origin master
时候,是时候真正重新推出该网站的促销版本了。
那么,有没有更好的方法来做到这一点?我应该使用还原而不是重置吗?有没有办法避免尴尬的-f
强制标志?其他的建议?