• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    如何使用Git优雅的回滚实现

    开发过程中,我们经常会遇到代码回滚的情况。正常人都知道,git 回滚有两大宝:

    当我们在本地开发,还未 git push 到远端时,可以毫无顾忌的使用 git reset 进行回滚。更多的情况中,我们不仅 push 了,而且由于开发周期长,在开发过程中不断的 merge mastermerge other-branch 以发布到预发环境测试或者多需求合并测试。

    突然

    上线后用户投诉,需要马上下线本次需求中的 A、B、C,只保留 D、E、F,迅速回滚,不要影响更多用户。

    撕逼?那肯定是来不及了。一群人在你背后眼巴巴地盯着你,就问你慌不慌...

    接下来,我们来说说,如何在紧急回滚面前,镇定(假)自若(装)地进行 git 操作

    简单场景

    本地操作使用 git reset 随便玩玩就行了,我们主要讲讲 git revert

    回滚“单一提交”

    回滚“连续提交”

    回滚一次“合并”

    回滚合并时,如果直接使用 git revert mergeCommit 实际上是递归回滚里面的每一个节点,指定 -m 是指定以哪一个分支为主线,当前所在分支为 1,依次类推(一次合并多个分支时会 > 2,正常只有 1 和 2)

     

    高级场景

    如果我们遇到的问题都像上面一样,那怎么能体现一个程序员的价值?

    回滚“混合场景”

    如以下场景中,我们期望回归的节点之间含有一次合并导致我们无法一次回滚到位。有两种方式:

    1. 按顺序见招拆招回滚(三次操作)

    2. 先回滚 D + F,再回滚合并(两次操作)

    【推荐】使用方案1,按顺序回滚会处理更少的 conflict,否则假设 D、F 是一系列提交合集,那么回滚成本很高

    回滚有点复杂“混合场景”

    如下的场景中,特殊的地方在于,我有一个 feature,搭车了一个 bugfix,我需要回滚需求但不回滚 bug

    这种情况下,有两种选择:

    回滚 G,通过 git 引一步一步回滚 F-F'-E‘-D'-C‘-E'‘(不滚)-D'‘(不滚)-C'‘(不滚) ,回滚 E+D 【推荐】回滚 G,回滚 F 丢弃 F',回滚 D+E,复原 C‘'..E‘' 比第一种方案更快更简单,不用处理第一种方案中的 conflict

    git revert G
    git revert F -m 1
    git revert D..E
    git cherry-pick C``
    git cherry-pick D``
    git cherry-pick E``

    回滚复杂的”混合场景“

    标注解释

    场景解释 一开始你所在的团队接到一个需求,这个需求中可以分拆出一个自需求,最终可以实现两人并行开发

    回滚方式

    遇到这样的场景,一般有如下几种方案回滚:

    git revert N`..S`
    // 仅回滚非 merge Master 节点,保留 Master 代码
    git log B``^..L`` --first-parent --no-merges --pretty=format:%H | xargs | xargs git cherry-pick -n 
    git revert E`..F`

    最后多说一点

    想要回滚不头痛,提前就要做好功课并且保持清晰的提交记录,否则几百个 commit 回滚起来就变成了一场灾难。提几个好方法

    保持 Commit 清晰

    善用 rebase

    多人并行开发,创建独立的分支进行合并测试 不要合并到某一个分支中,防止上线时间变化导致代码再次清洗

    到此这篇关于如何使用Git优雅的回滚实现的文章就介绍到这了,更多相关Git 回滚内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • IDEA通过git回滚到某个提交节点或某个版本的操作方法
    • 利用PyCharm操作Github(仓库新建、更新,代码回滚)
    • Git使用小技巧之回滚与撤销详解
    • git 删除分支和回滚的实例详解
    • 简单谈谈Git中的回滚操作
    上一篇:OSPF路由协议详解
    下一篇:详解git的基本使用方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    如何使用Git优雅的回滚实现 如何,使用,Git,优雅,的,回滚,