今天在进行revert操作的时候报了标题所示的错误,思考一番后解决,以下是解决方法
我的操作是在F1,F2分支上修改并提交之后,在github上提交merge request请求合并完成之后,通知F1的需求不上了,需要revert(两个分支无冲突,直接merge和revert就行)
此时有两种方案:
第一种:直接在本地建立一个revert_F1分支,然后使用 git revert <commitId> 即可,这时我运行git revert a3eb5db,直接报错commit XXX is a merge but no -m option
因为对于revert merge的情况,我们需要指出revert 这个merge commit中的哪一个。通过-m
或者--mainline
参数,以及配合一个整数参数,git就知道到底要revert哪一个merge。
下图中绿色框中Merge: xxxx(对应master分支的commitId) xxxx(对应F1分支的commitId) 实际上是对应了两个commitId.
如果使用git revert
a3eb5db -m 1
命令会revert第一个commit,也就是6e4c52b(在图中没有展示出来)
,使用-m 2
会revert第二个commit,也就是70c74d0
。
如果做了以上操作不行的话,就把你的commitId吧F1 merge 时的commitId改成F1提交时的commitId再运行git revert <commitId>命令即可
对应上图中就是运行git revert 70c74d0
第二种:在github或者gitlab上找到你pull requests中你merged或者close的列表,找到之前merge的记录点击进去找到revert按钮点击即可revert