git merge合并分支代码后如何回退合并操作

写在前面

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

切换到合并源分支

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

git revert

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

写在最后

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值