事情是这样的:
菜鸡从 test 分支切了个名为 pref-art 的分支出来,发布后一机灵,发现错了,于是在本地用 git branch -d pref-art 将该分支删掉了。之后切到了 prod 分支,再切出了一个相同名称的 pref-art 分支出来,然后在此进行开发。
要上线了,于是通过 gitlab 创建合并请求进行合并,看到绿色无冲突也就!超!大!胆!地直接点了确定合并,疏忽了看一下这个很离谱的变动。
毫无疑问,一上线就出问题了,需要紧急回退。
操作步骤
- 点进去自己要回退的合并请求中
2. 点击"还原",然后选择要回退的分支,比如我这里是要在 prod 上回退重新发版

- 回到首页,你会发现多了一个临时分支

- 新建合并请求,把这个分支合并到你要回退的分支去

- 之后完成这个合并就可以啦!
抢救
这个时候,我们还是需要把已经做好的功能给拿过来,但原来的 pref-art 分支肯定是不能用了,因为它混合了 test 分支的代码。所以我们通过 cherry-pick 来取出有用的修改。
-
从 prod 切出来一个新的分支,暂且取名为 pick-art 吧!
-
通过查看你的提交记录,找到有用的那个commit ID,复制下来

- 在这个新的功能分支 pick-art 中cherry-pick
git cherry-pick XXXXXXX(刚刚复制的ID)
- 提交后就进入到和往常一样的正常的合并流程啦!~通过 gitlab 新建合并请求,将它合到 prod 上去。