跳到主要内容

Cherry Pick

CherryPick 用于从一个分支中挑选特定的提交,并将其应用到另一个分支,而不需要合并整个分支的更改。这使你可以非常精确地选择性地引入代码更改,而不必合并整个分支。

它的名字来源于“摘樱桃”(Cherry-pick),因为你只选择所需的“果实”(提交)。

使用场景

​ 1. 从开发分支提取特定功能或修复

例如,你在 dev 分支中完成了一个重要修复,但需要将它应用到 main 分支。

​ 2. 从他人分支借用代码

当另一个开发者的分支中有一个对你有用的提交时,可以直接提取该提交到你的分支。

​ 3. 在分支之间共享单个提交

在不同分支中复用某些功能或修复,而不合并所有更改。

如何使用 Cherry-Pick


CherryPick一个PR的基本步骤

  1. 在项目页点击「Pull Requests」后,选择你想要CherryPick的PR。

image-20250102093909204

  1. 在PR详细信息页面点击「Cherry-Pick」按钮。

image-20250102094458919

  1. 在弹出的确认框中,选择你想将这个PR Cherry-Pick到的分支后点击「提交」。

image-20250102094840852

  1. 审核和合并

如果您勾选「使用新的Pull Request进行CherryPick」,则会进入新建CherryPick Pull Request页面,点击「创建」后PR会进入审查流程,一旦获得批准,选择的提交将被应用到目标分支中。

CherryPick一次提交的基本步骤

  1. 在项目详情页点击「历史提交」可以查看历史提交列表。

image-20250102095939188

  1. 选择你想要CherryPick的一次提交。

image-20250102100255814

  1. 点击提交详情页右上角「...」后选择「CherryPick」也可以将该次提交CherryPick到目标分支。

image-20250102100500810

注意:Cherry-Pick 也存在一些限制:

  • 可能会引入冲突:如果选择的提交与目标分支中的其他更改发生冲突,你需要手动解决这些冲突。
  • 提交历史可能变得混乱:频繁使用 Cherry-Pick 可能会导致提交历史变得复杂,需要谨慎使用。

CherryPick 允许开发者灵活地在分支间移动提交。在使用时,需要注意冲突处理和依赖关系,确保代码的稳定性和一致性。