zoukankan      html  css  js  c++  java
  • git把测试分支误合并到开发分支后的回滚操作

    场景:正常开发流程,我们会从master分支上拉一个新分支作为开发分支进行开发,但是在开发过程中有伙伴把测试分支合并到了开发分支,最后如果把开发分支合并回master分支的话,master分支会多了测试分支的代码,这些代码可能在其他开发模块还没上线,可能会导致生产环境出现异常,那么,如何从开发分支撤销掉从测试分支合并过来的代码呢?

    分支如下图

     

    思路:如上图,先在dev4上撤销commit回滚到dev3上,然后把回滚的代码放到贮存区,再撤销dev3这个commit,并且不要dev3的代码(因为dev3的代码是从test分支合并过来的),这时候dev的分支回到了dev2,再把贮存区的代码还原回来(即dev4的代码),再作为一个新的开发分支推送到远程分支,然后这个就是没有了测试分支的代码的开发分支
    具体的操作验证
    1.查看日志,记录需还原的commit版本号, git log --pretty=oneline
    git log --pretty =oneline


    2.撤销已提交的commit,回滚到测试分支误合并到开发分支的commit版本
    git reset --mixed 回滚版本号

    3.再次使用git log可以看到当前HEAD指向了测试分支误合并到开发分支的commit版本

    这时候我们的代码区多了很多未暂存的文件

    4.把撤销的代码文件暂存起来
    git stash save ‘保存撤销的代码’

    5.再撤销当前commit并且不保留代码(因为这里的代码是测试分支的,我们不需要这些代码)
    git reset --hard HEAD^


    6.把贮存区的代码重新应用出来
    git stash list
    git stash apply stash@{0}

    7.这时候千万别pull代码,如果pull的话,HEAD指针又会指向远程的dev上最新的commit上,又会自动把测试分支的代码合并回来,直接把这个分支作为新的开发分支推送到远程仓库即可,然后用这个分支作为开发分支开发,最后把这个分支的代码合并回master分支,这时候就去掉了原来dev分支误合并的测试分支代码了,如图

     8.此时可选择在新建分支后将代码推送到远程,用这个新分支代替原分支进行开发,或选择删除当前远程分支把当前分支提交到远程如下:

    ①删除当前分支的远程分支

    $ git push origin :currentBranch 
    $ //或者这么写git push origin --delete currentBranch

    ②把当前分支提交到远程

    $ git push origin currentBranch

    注:
    1.撤销上次的commit :HEAD~1或者HEAD^
    2.git reset --mixed HEAD^
    3.git reset --soft HEAD^
    4.git reset --hard HEAD^
    5.执行完git reset --mixed HEAD^命令后在idea可以看到已经撤销了刚刚的commit,文件又变回未提交的蓝色了
    6.mixed 相当于代码保留,撤销git commit,同时撤销git add,代码回到未暂存区
    7.soft相当于代码保留,撤销git commit ,不撤销git add,代码回到暂存区
    8.hard不保留代码,撤销git commit,同时撤销git add,回到了上一次commit的状态
    9. git relog 查看历史操作

    还有一种常见的场景,本来在开发分支进行开发,然后切换到测试环境,合并了代码,但是这时候忘了切回开发分支,在测试分支提交了代码,这就导致开发分支少了这次提交的代码

    处理方式一
    记录自己操作过的代码,切换到开发分支,手动把代码补充完整,最笨的方法

    处理方式二
    在测试分支撤销掉当前提交的commit(git reset --mixed HEAD^),当然远程的测试分支并没有撤销,然后切回开发分支,把刚撤销的代码在开发分支重新提交一次即可,最后再开发分支合并到测试分支也不会有任何问题,因为修改的代码文件是一样的
    ————————————————

  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/chenhuichao/p/14820230.html
Copyright © 2011-2022 走看看