1、场景
错误的将不该和并的分支合并了上去
2、例
test为正在测试的新功能分支,操作人错误的将test分支合并到了主分支master,此时希望将test的分支提交回滚
3、策略
- 撤销此次的提交 reset
- 提交一次新的提交反向撤销本次提交 revert
4、问题
- reset
可能因在发现之前,mater上已执行了多次的提交,如下所示:
. . . commit1 commit2 commit3 testCommit commit4 commit5 ...
此时若想撤销此次提交,那么我们需要将提交回滚到testCommit 之前的状态(commit3),reset操作将完全舍弃testCommit至最后的所有提交,若想保留之后的提交,需重新合并
2. revert
revert操作并不会撤销原来的提交操作(即testCommit 提交依然是一个有效的提交),其将创建一个新的提交,其内容将反向撤销testCommit 所提交的内容,但是,此时git的head是一直往前的,也就是说,再对test 分支向master分支提交将没有任何内容可以进行提交,提示此时的master已经是最新的代码(虽然此时test分支的内容在master上完全没有),那么这个时候只需要对revert的操作再进行一次revert操作,即可以将原来revert的内容复原,在此基础上,重新合并新的内容即可