zoukankan      html  css  js  c++  java
  • git cherry-pick 报错is a merge but no -m option was given

    gerrit上提示代码冲突的时候,我们首先会想到rebase下,不行的话就只能解决冲突了,最简单的做法是我的另一篇博客https://www.cnblogs.com/zndxall/p/9140813.html 中的方法,但是有的时候还是会出现问题,报错commit xxxx is a merge but no -m option was given,如下:

    或者执行git cherry-pick 4e73b64a5fc251e6ff82aa1db4316bd4ecd389d5 是一样的效果。

    出现这个问题,是因为提交的代码之前pull 了其他人的代码并合入了自己本地的代码,产生了一个merge操作以后,又push到代码仓,就会出现这种情况,我们看下他的提交日志:

    分3个点解释,标记“1”很明显是一个merge操作,标记“2”是他自己的改动,标记“3”我们看到parent节点有两个,一个merge里有多个父节点,cherry-pick的时候至少要指定一个父节点,可以用-m parent-num来指定,parent-num 默认从1开始,比如上面的两个父节点,

    上面一个父节点29b3eb321d8f512616fad12ce40d7ed22d5d4371的parent-num 为1  ,

    下面一个父节点43bd1d238829f067547ebd8f372a6ded5732690a的parent-num为2,

    那么在cherry-pick的时候,如果选定父节点为第一个的话,

    命令为 git cherry-pick 4e73b64a5fc251e6ff82aa1db4316bd4ecd389d5 -m 1

    结果如下:

    (备注:如果这里显示失败的话,如果没有失败的话,不用关心这一步,如图:

    是因为你cherry-pick了两次,所以需要取消上次的cherry-pick操作,有多种方式,一种是回退到比较老的节点,然后pull最新代码,一种是基于目标分支重新建一个分支专门用来做cherry-pick)

    接着再执行git status ,会提示冲突文件,如下:

    修改冲突文件后,执行git add . (即add 所有修改),然后git commit -s 写评论,然后git push origin HEAD:refs/for/$branch提交入库即可 ($branch为你的当前工作分支)。

  • 相关阅读:
    ajax实现异步请求的过程
    GET和POST的区别,何时使用POST?
    函数有几种调用方式?
    substring、slice、substr的区别
    Spring 调用 Stored Procedure 并获取返回值
    Oracle 中, 使用 Instr 函数 替换 OR
    Oracle Materialized View refresh
    Oracle中Union 和 Union All
    toString() 和 强制类型转换 (String)
    2013年这一年
  • 原文地址:https://www.cnblogs.com/zndxall/p/9141313.html
Copyright © 2011-2022 走看看