Skip to main content

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。

这时候最好用的办法是

  1. 切到 master 拉取最新代码,基于它开新的 feature/b 分支
  2. 把 feature/a 的提交都 cherry-pick 出来到 feature/b 分支上
  3. 只需要解决一次冲突
  4. 将 feature/b merge 到 master 上