学习git(八):git cherry-pick的使用

本文介绍了Git的cherry-pick命令,用于从一个分支选择特定的提交并应用到另一个分支。在开发过程中,当需要将部分功能提前上线时,cherry-pick成为了一个有效的工具。通过实例演示了如何使用cherry-pick,包括单个提交和范围内的提交,并提到了-n选项来批量处理。文章最后总结了cherry-pick的重要性和使用场景。
摘要由CSDN通过智能技术生成

每天对自己多问几个为什么,总是有着想象不到的收获。 一个菜鸟小白的成长之路(copyer)

在最近的项目中,一个同事使用 git cherry-pick,这个指令,我确实看懵了,我根本就没有看到过,所以,就下来了解了一波。学习总是好的嘛。


使用场景

master分支用来发布版本的

dev用来开发的功能模块的

在实际的开发过程中,可能遇到这样的情况,所以程序员都早疯狂的写代码,已经在dev分支上完成了 A功能B功能C 功能。有一天,老板为了赚钱,要求程序员先把 A功能B 功能先上线,C功能和正在开发的其他功能下次再上线。 那么对于程序员来说,肯定不能使用 git merge,因为这样会把当前正在开发的功能也上传上去,影响程序的运行。所以,这下就需要使用 cherry-pick这个指令。

基本使用
git cherry-pick commitId
实例
// 初始化
git init

// master的代码提交
touch master.js
git add . && git commit -m 'master c1'

// 创建dev分支
git checkout -b 'dev'

touch a.js
git add . && git commit -m 'a'

touch b.js
git add . && git commit -m 'b'

touch c.js
git add . && git commit -m 'c'
git log(dev)

在这里插入图片描述

这里已经开发完成了3个功能,现在只需要把 A B 功能上线。

所以我需要在master分支上使用 cherry-pick命令。

首先: 我们需要先记录下 abcommitId , 只需要前面的几位就可以了。

a   57c1b614a
b   aa1f03dd0999

接下来,切换到master分支上

git checkout master

git cherry-pick 57c1b614a
git cherry-pick aa1f03dd0999

然后看下

git log

在这里插入图片描述

这样 A B功能就被合并过去了,但是这里需要注意的是:这里的commitID的改变了的。

但是呢?还是有个问题,如果需要移植很多,难道还要一次一次的执行命令吗?答案肯定不是的,

这里也支持区间

git cherry-pick commit1..commit100

但是要注意,这是一个左开右闭的操作,也就是说,commit1不会被合并到master分支,而commit100则会。


使用:

在这里插入图片描述

切换 到 master分支

git checkout master
git cherry-pick 0785f5c670e70609..daba06ba67367
// master c1 不会被合并
// b 会被合并

这样的效果是一样的


选项

cherry-pick命令每拣选一个commit就会提交一次生成一个新的commit id。

如果我们想让每个commit 拣选后暂缓提交,等到所有commit都拣选完成后,自己手动commit,应该怎么办呢?答案是用-n 选项。

git cherry-pick -n 0785f5c670e70609..daba06ba67367

这样,所以都都被保存到缓存区了,然后自己手动 commit , 写一个总commit记录的就行了。


总结

cherry-pick是新的知识,了解的太少,需要学习

// 命令总结
git cherry-pick commitId

git cherry-pick commitId..commitId  (左开右闭)

git cherry-pick -n 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值