我们制作了一个特别的促销版本的网站,管理层要求它推动它,我们做了。假设从正常站点开始(为简单起见,将其称为commit 0),我们需要5次提交来创建促销版本,并且所有这些提交都是在master上进行的(因此工作促销站点是提交5)。
现在我们接到一个紧急电话:我们最初提供的促销日期是错误的,促销活动不应该在下周开始。请立即回滚到原始网站。
哪一系列的git命令适合解决这个问题?
这是一个想法,我认为它会起作用但似乎不是最理想的:
git branch promo
保存我们的促销工作以供日后使用git reset --hard 0
回滚到正常网站git push -f origin master
再次推送正常网站。我们需要“强制”标志,否则git会抱怨原点在我们当地的分支之前。git merge promo
和git push origin master
,是时候再次实际推送该网站的促销版本了。那么,有更好的方法吗?我应该使用还原而不是重置吗?有没有办法避免笨拙的-f
力旗?其他评论?
答案 0 :(得分:2)
作为一项规则,我不喜欢重写历史;变化总是向前发展。我会这样做。
# Keep a copy of the promo state
git branch promo
# Undo the changes
git revert 0
git push
在“促销”分支上做你的工作。你可以改变,从“主人”合并,做你喜欢的任何事情。
然后,当它真的是时候:
git merge promo
git push
答案 1 :(得分:1)
对于第5点,我宁愿在promo
之上重新定位master
。
git checkout promo
git rebase master
git checkout master
git merge promo # fast-forward master HEAD to promo HEAD
git push
这样你就可以在测试促销与你所做的错误修正的集成时保持线性历史记录(提交6和7)。