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为你的当前工作分支)。
最新文章
- 文件操作之FileOpenPicker、FileSavePicker和FolderPicker
- 终于看完<;LEARNING SQL>;第二版,立此存照
- 有了iscsi存储怎么让主机识别以及使用创建lvm
- Monkey之环境搭建完全版
- C++混合编程之idlcpp教程Lua篇(3)
- 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(一)
- IOS 加载Xib 后 如何 动态修改xib中的控件frame
- python :列表 字典 集合 类 ----局部变量可以改全局变量
- NodeJS学习之网络操作
- 从零一起学Spring Boot之LayIM项目长成记(五)websocket
- (译)Web是如何工作的(2):客户端-服务器模型,以及Web应用程序的结构
- 使用socket.io client 开发时兼容IE低版本的办法
- linux普通用户使用1024以下的端口(80)
- Direct2D教程III——几何(Geometry)对象
- Zookeeper学习记录(二):使用以及配置
- [Swift实际操作]七、常见概念-(8)日历Calendar和时区TimerZone
- 通过ifrmae异步下载文档
- 关于bootstrap-datetimepicker.js不支持IE8的解决办法
- dda的fpga实现(转载)
- 计算机网络概述4_性能指标之时延,时延带宽积,往返时间RTT,利用率