How to cherry-pick
常规使用
本地执行git reflog
查看所有提交记录,然后按照最早的版本到最新的版本顺序,进行 cherry-pick 操作:
比如将 master 的某两个提交 A,B
拆分合并到 release 上:
git checkout release
git checkout -b feature/merge-ab-to-release
git cherry-pick A B
rebase 冲突较多的时候
我们经常会开一个 feature/a 分支开发,有时候这个分支会开发较久,导致落后基础分支很多个版本了,即:
- 自己->从 master 迁出 feature/a 分支开发
- 他人 1->有代码 merge 进 master
- 他人 2->有代码 merge 进 master
- ...
如果他人的代码与自己的代码无冲突,那么可以直接 rebase 无冲突,但是如果他人的代码与自己的有冲突,那么我在做 rebase 的时候就会遇到 n 次相同的 conflict。
这时候最好用的办法是
- 切到 master 拉取最新代码,基于它开新的 feature/b 分支
- 把 feature/a 的提交都 cherry-pick 出来到 feature/b 分支上
- 只需要解决一次冲突
- 将 feature/b merge 到 master 上