git基础教程(28) 猴子偷桃,git cherry-pick采樱桃
提示:本文经奇妙之二进制二次编辑和审核, 修正了一些错误,包括但不限于错别字,语句不通顺,代码编译不过,命令书写错误,图片缺失,排版优化等。
文章目录
- 一、基本用法
- 二、转移多个提交
- 三、配置项
- 四、代码冲突
- 五、转移到另一个代码库
对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。
这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge
)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 cherry-pick。
一、基本用法
git cherry-pick
命令的作用,就是将指定的提交(commit)应用于其他分支。
$ git cherry-pick <commitHash>
上面命令就会将指定的提交commitHash
,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。
举例来说,代码仓库有master
和feature
两个分支。
a - b - c - d Master\e - f - g Feature
现在将提交f
应用到master
分支。
# 切换到 master 分支
$ git checkout master# Cherry pick 操作
$ git cherry-pick f
上面的操作完成以后,代码库就变成了下面的样子。
a - b - c - d - f' Master\e - f - g Feature
从上面可以看到,master
分支的末尾增加了一个提交f'
。
git cherry-pick
命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交。
$ git cherry-pick feature
上面代码表示将feature
分支的最近一次提交,转移到当前分支。
二、转移多个提交
Cherry pick 支持一次转移多个提交。
$ git cherry-pick <HashA> <HashB>
上面的命令将 A 和 B 两个提交应用到当前分支。这会在当前分支生成两个对应的新提交。
如果想要转移一系列的连续提交,可以使用下面的简便语法。
$ git cherry-pick A..B
上面的命令可以转移从 A 到 B 的所有提交。它们必须按照正确的顺序放置:提交 A 必须早于提交 B,否则命令将失败,但不会报错。
注意,使用上面的命令,提交 A 将不会包含在 Cherry pick 中。如果要包含提交 A,可以使用下面的语法。
$ git cherry-pick A^..B
三、配置项
git cherry-pick
命令的常用配置项如下。
(1)-e
,--edit
打开外部编辑器,编辑提交信息。
(2)-n
,--no-commit
只更新工作区和暂存区,不产生新的提交。
这个选项非常有用,因为cherry-pick pick了多少个commit,就会相应地生成多少个commit,如果我们想保持一个commit,就可以使用该选项。
(3)-x
在提交信息的末尾追加一行(cherry picked from commit ...)
,方便以后查到这个提交是如何产生的。
(4)-s
,--signoff
在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。
(5)-m parent-number
,--mainline parent-number
如果原始提交是一个合并节点,来自于两个分支的合并,那么 Cherry pick 默认将失败,因为它不知道应该采用哪个分支的代码变动。
-m
配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number
是一个从1
开始的整数,代表原始提交的父分支编号。
$ git cherry-pick -m 1 <commitHash>
上面命令表示,Cherry pick 采用提交commitHash
来自编号1的父分支的变动。
一般来说,1号父分支是接受变动的分支(the branch being merged into),2号父分支是作为变动来源的分支(the branch being merged from)。
四、代码冲突
如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。
(1)--continue
用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .
),第二步使用下面的命令,让 Cherry pick 过程继续执行。
$ git cherry-pick --continue
(2)--abort
发生代码冲突后,放弃合并,回到操作前的样子。
(3)--quit
发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。
五、转移到另一个代码库
Cherry pick 也支持转移另一个代码库的提交,方法是先将该库加为远程仓库。
$ git remote add target git://gitUrl
上面命令添加了一个远程仓库target
。
然后,将远程代码抓取到本地。
$ git fetch target
上面命令将远程代码仓库抓取到本地。
接着,检查一下要从远程仓库转移的提交,获取它的哈希值。
$ git log target/master
最后,使用git cherry-pick
命令转移提交。
$ git cherry-pick <commitHash>
git基础教程(28) 猴子偷桃,git cherry-pick采樱桃相关推荐
- git基础教程(3) Windows10下安装Git
提示:本文经奇妙之二进制二次编辑和审核, 修正了一些错误,包括但不限于错别字,语句不通顺,代码编译不过,命令书写错误,图片缺失,排版优化等. Git是一个开源的分布式版本控制系统,可以有效.高速的处理 ...
- git基础教程(2) 吹吹牛闲聊Git 简史
提示:本文经奇妙之二进制二次编辑和审核, 修正了一些错误,包括但不限于错别字,语句不通顺,代码编译不过,命令书写错误,图片缺失,排版优化等. 同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举 ...
- Git基础教程(二)
继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 1 配置命令:git config --global * 2 版本库初始化:git init 3 向版本库添加文件:git ad ...
- Git系列(一)、Git基础教程【建议收藏】
Git基础教程 一.Git简介 1.1.什么是Git? 1.2.Git的特点 1.3.集中式与分布式的区别? 1.4.什么是版本控制系统? 1.5.Git下载安装 1.5.Git配置 1.6.Git ...
- python猴子偷桃_Python实例100个(基于最新Python3.7版本)
Python3 100例 原题地址: http://www.runoob.com/python/python-100-examples.html git地址: https://github.com/R ...
- 猴子偷桃c语言编程软件,c语言经典算法——猴子偷桃问题
题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...
- java写猴子偷桃问题_猴子偷桃是什么意思
满意答案 xucw111 2013.04.02 采纳率:42% 等级:11 已帮助:8003人 从字面意思理解就是猴子偷桃子涩!从引申意来讲这个问题就有点严肃了. 从前,有一个美丽的小村庄,名字 ...
- 面试编程题-猴子偷桃
近期面试两次碰到这道题,很有意思,哈哈,所以现在写下来纪念一下. 题目 一个猴子来到山里的一棵桃树下,发现有一堆桃子.第一天它吃掉一个,然后拿走一半,回到家里,把消息告诉第二个猴子.第二天第二个猴子也 ...
- 实例021:猴子偷桃 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上
实例021:猴子偷桃 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第1 ...
最新文章
- 210328卡式水分开阶段总结
- Kubectl get pods 一直处于 Status:containerCreating
- Windows 环境下安装redis 及其PHP Redis扩展
- syslog-ng 正确配置udp接受端口
- mysql悲观锁 更新_MySQL学习笔记(四)悲观锁 for update
- 计算机二级vfp模拟考试题,计算机等级考试二级VFP模拟练习题[10]
- 类模板非类型形参实现Stack
- 【操作系统】操作系统的生成
- Java 编解码问题
- java常用算法_五分钟记住Java常用的八种排序算法与代码实现
- 【毕业设计】php+mysql社区交流系统(毕业论文+封面目录+系统+说明书)
- python 启动参数_python启动参数
- PyTorch并行与分布式(三)DataParallel原理、源码解析、举例实战
- java 调用 c# webservice 压缩 Liststring示例
- 用Java代码敲出简易的王者荣耀单机版,让你秒懂王者荣耀的运行机制
- 统计学常用的数据分析方法总结
- vue json对象转数组_vue面试题汇总
- 装配图中齿轮的画法_装配图的视图和画法
- 暑期旅游超十亿人次,张家界成为大黑马,挤掉三亚西安排全国第三
- HTTP Security Header Not Detected
热门文章
- 基于Sikuli GUI图像识别框架的PC客户端自动化测试实践
- Windows通过服务名强行停止某个服务命令
- ht城市介绍人口数量Html,城市人口英文作文
- MySQL如何快速恢复单表(物理方式)
- CNN神经网络的个人总结
- ZoomEye Pro-情报驱动的网络空间资产安全管理系统
- c语言mktime返回值为-1,C语言mktime()
- 不管是什么病,连常见的感冒都是痛苦的,不能要强迫别人体验
- 我靠加班把老员工弄走了,昨天老板又给我画饼,一天天浑浑噩噩,Android开发究竟还有前途吗?
- zbb20181214 js,html 点击页面出现游走文字 富强 民主 民主