Git中的cherry-pick

Git中的cherry-pick

1.概述

git cherry-pick可以理解为"挑拣"提交,它会获取某一个分支的单笔/多笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了。

2.场景图

在这里插入图片描述
如上,在master分支上开发项目。完成了一个稳定版本,我们需要发布,于是新建了一个Stable/1.x分支(这个时候该分支代码和主分支代码是一样的),并且把给这次版本打了一个标记Release tag 1.0(不熟悉tag的参见我这篇文章)。然后分布Stable/1.x分支的代码。

之后切换到master继续开始下一版本的开发。我们有添加了两次功能,并且对Add feature 1Add feature 2这两个功能都做了提交。之后,我们发现项目有一个地方有bug,于是我们修复bug并且又做了一次提交(fix bug)。但这个bugStable/1.x分支也存在的,我们想要在Stable/1.x分支合并master分支的代码,当通过merge合并代码,会把master分支所有的提交都会进行合并,包括Add feature 1Add feature 2,这不是我们希望的结果。

于是,我们用到了git cherry-pick 版本hash值。它可以只将某一次提交合入到本地当前分支上。

3.示例

现在有一个项目,里面有一个文件hello.txt内容如下:
在这里插入图片描述
这个时候我们想要发布项目。于是我们新建了一个分支Stable1(记得git init初始化):
在这里插入图片描述
然后回到master分支继续进行下一阶段的开发:
在这里插入图片描述
新建一个文件feature.txt进行下一功能(功能a)的开发,并且提交:
在这里插入图片描述
在这里插入图片描述
新建一个文件featureb.txt进行下一功能(功能b)的开发,并且提交:
在这里插入图片描述
在这里插入图片描述
然后突然发现有个新bug需要修复,于是在hello.txt中修复bug,并且提交:
在这里插入图片描述
在这里插入图片描述
这个bugstable1分支也存在的,我们想要在stable1分支合并master分支中关于fix bug的代码,不希望合并master分支中关于add feature/aadd feature/b的代码。这时候需要用cherry-pick

master分支打印版本记录,然后我们切换到stable1分支:
在这里插入图片描述
进行cherry-pick
在这里插入图片描述
此时在stable1分支,可以看到项目中没有feature.txtfeatureb.txt文件,说明并没有合并add feature/aadd feature/b
在这里插入图片描述
打开hello.txt
在这里插入图片描述
上图说明stable1分支合并了master分支中的fix bug提交。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值