当前位置:   article > 正文

git merge合并分支代码后如何回退合并操作_git怎么回退已merge的代码

git怎么回退已merge的代码

写在前面

  • 这次问题产生的原因还是自己操作过于急躁了,新功能开发完成之后没有实时的与经理沟通就进行了新功能分支合并的操作,导致当前版本部分功能由于没有同步产生了一些问题,因此需要把代码进行回退操作;
  • 但是分支代码修改了许多文件,并且已经推送到了远程仓库,手动一个个的对照远程仓库的提交记录进行代码还原显然不太合适(这是一种笨方法,但是也能解决,这里不这么处理);
  • 在查询git 相关指令后了解到了 git revert 命令,最终得以解决,下面介绍解决方式。

切换到合并源分支

  • 我这边的例子是将新功能分支 feature/dataQuality 合并到了 release分支
  • 所以我们这边切换到release分支
git checkout origin/release
  • 1

git revert

  • 在编辑器中查看当时的提交记录,取出commit id, 同时确认一下当时修改的文件
    在这里插入图片描述
  • 这时候新建一个终端,敲入命令 git revert commit-id
  • git revert回退到指定commit, 是合并代码的反向操作,通过此命令生成新的commit提交记录,提交此记录来覆盖远端仓库的代码(本质就是拿到合并前的代码,然后把合并前的代码重新提交从而实现代码还原);于是我们执行如下命令
git revert 0bda23a5
  • 1
  • 然后控制台就得到一串报错
error: commit 0bda23a5468b9ddca6aa63dc6bae783da577181c is a merge but no -m option was given.
fatal: revert failed
  • 1
  • 2
  • 报错原因:因为需要回滚的commit 是一个merge动作,需要显示给出-m(mainline)选择告诉git回滚具体哪一个mainline(取值为1 或 2)
  • 由于合并时是两个分支进行合并,我们这边没有指明是要哪条分支的代码;因此我们再次查看提交记录(编辑器中查看),你也可以使用命令git show 0bda23a5 来查看,截图如下:
    编辑器中查看
    git show commit-id
  • 根据
 commit 0bda23a5468b9ddca6aa63dc6bae783da577181c
 Merge: b287963c 9de004ff
  • 1
  • 2
  • 这样一来,根据我们当下的情况, git revert 0bda23a5 -m 1 (1标识的就是b287963c 也就是合并源即上述讲到的release分支)
  • 最终我们执行 git revert 0bda23a5 -m 1 后会发现现在代码提交处会生成一份新的提交记录,我们只需要将其再次提交即可解决问题

写在最后

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/410271
推荐阅读
相关标签
  

闽ICP备14008679号