写在前面
- 这次问题产生的原因还是自己操作过于急躁了,新功能开发完成之后没有实时的与经理沟通就进行了新功能分支合并的操作,导致当前版本部分功能由于没有同步产生了一些问题,因此需要把代码进行回退操作;
- 但是分支代码修改了许多文件,并且已经推送到了远程仓库,手动一个个的对照远程仓库的提交记录进行代码还原显然不太合适(这是一种笨方法,但是也能解决,这里不这么处理);
- 在查询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
来查看,截图如下:
- 根据
commit 0bda23a5468b9ddca6aa63dc6bae783da577181c
Merge: b287963c 9de004ff
- 这样一来,根据我们当下的情况, git revert 0bda23a5 -m 1 (1标识的就是b287963c 也就是合并源即上述讲到的release分支)
- 最终我们执行
git revert 0bda23a5 -m 1
后会发现现在代码提交处会生成一份新的提交记录,我们只需要将其再次提交即可解决问题
写在最后
- 参考地址: git revert 回滚代码合并操作
文章来源地址https://www.toymoban.com/news/detail-721038.html
文章来源:https://www.toymoban.com/news/detail-721038.html
到了这里,关于git merge合并分支代码后如何回退合并操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!