前言
最近一周在对项目的代码做一些构建工程的整改,一些通用的代码往往经常需要在代码库中的各个分支进行提交。没接触过 cherry-pick
功能时,往往需要你反复切换分支,在各个分支上进行相关内容的修改。这样的操作不仅繁琐,而且修改的地方一多,极易出错!
cherry-pick 的理解
Git 提供了 cherry-pick
的命令可以很好的解决上面场景的问题,高效、快捷!同样的适配,会该用法之后,比其他同事能够提前不少时间完成整改!
我们代码库中的一个个 commit
可以看做一个个 cherry
。同一个代码库中的 commit-id
往往是唯一的,当你在分支 B 上也需要在分支 A 上的提交内容时,就可以将它们 cherry-pick
过来!
语法
- git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
- [-S[<keyid>]] <commit>…
- git cherry-pick (--continue | --skip | --abort | --quit)
稍安勿躁,上面是该命令的语法,下面我们将通过如下的这个仓库进行示例演示:
- 代码库有三个分支:
master
、feature-a
、feature-b
master
分支处于d3113d5
feature-a
基于master
分支创建后,进行了三次提交,commit-id
分别是:b09a488c011cb954e0de0df7e4a03622daeefc8d
9517fc12ecfb81ecc6379dc7cc62368e239c4542
6b95b589152a6e54a6a7c945d9de97eb3ecc147a
feature-b
特性分支b,当前处于967181
,这里是为了测试的时候方便恢复
从 feature-a 分支选择 2 个提交合入 feature-b
首先解决一个疑问,可能有同学会说,为何不采用 merge 进行分支的合并呢?
因为,并不是每个场景都是可以进行分支的合并的。比如,这两个分支就是不同的发布分支,一个是版本 1.0.0 的分支,一个是版本 2.0.0 的分支,这两个版本分支是需要独立保存的。这时候将它们进行合并就不合适。但是这时候有一个 bug 是它俩都有的,需要修复。使用 cherry-pick 就可以仅仅将你在一个分支上修复的内容筛选出来,提交到另一个分支上!
看