gerrit上提示代码冲突的时候,咱们首先会想到rebase下,不行的话就只能解决冲突了,最简单的作法是个人另外一篇博客https://www.cnblogs.com/zndxall/p/9140813.html 中的方法,可是有的时候仍是会出现问题,报错commit xxxx is a merge but no -m option was given,以下:html
或者执行git cherry-pick 4e73b64a5fc251e6ff82aa1db4316bd4ecd389d5 是同样的效果。git
出现这个问题,是由于提交的代码以前pull 了其余人的代码并合入了本身本地的代码,产生了一个merge操做之后,又push到代码仓,就会出现这种状况,咱们看下他的提交日志:日志
分3个点解释,标记“1”很明显是一个merge操做,标记“2”是他本身的改动,标记“3”咱们看到parent节点有两个,一个merge里有多个父节点,cherry-pick的时候至少要指定一个父节点,能够用-m parent-num来指定,parent-num 默认从1开始,好比上面的两个父节点,htm
上面一个父节点29b3eb321d8f512616fad12ce40d7ed22d5d4371的parent-num 为1 ,blog
下面一个父节点43bd1d238829f067547ebd8f372a6ded5732690a的parent-num为2,博客
那么在cherry-pick的时候,若是选定父节点为第一个的话,it
命令为 git cherry-pick 4e73b64a5fc251e6ff82aa1db4316bd4ecd389d5 -m 1io
结果以下:class
(备注:若是这里显示失败的话,若是没有失败的话,不用关心这一步,如图:方法
是由于你cherry-pick了两次,因此须要取消上次的cherry-pick操做,有多种方式,一种是回退到比较老的节点,而后pull最新代码,一种是基于目标分支从新建一个分支专门用来作cherry-pick)
接着再执行git status ,会提示冲突文件,以下:
修改冲突文件后,执行git add . (即add 全部修改),而后git commit -s 写评论,而后git push origin HEAD:refs/for/$branch提交入库便可 ($branch为你的当前工做分支)。