# 自动化精选合并

`npm run other:cherry-pick` 可自动将带有特定标签的拉取请求精选合并至**当前分支**。

该功能在WordPress主要版本发布时尤为实用，因为脚本默认会查找带有`Backport to WP Beta/RC`标签的已合并拉取请求。

您也可以通过传递自定义标签作为第一个参数，在不同场景中使用此功能。具体示例可参阅本文档末尾的Gutenberg插件发布案例。

运行`npm run other:cherry-pick`会出现以下提示：

```
当前位于 "wp/6.2" 分支
本脚本将执行以下操作：
• 将标记为"Backport to WP Beta/RC"的已合并PR精选合并至此分支
• 询问是否推送该分支
• 在每个PR中添加注释
• 移除每个PR的标签

后两项操作将使用您关联至GitHub CLI（gh命令）的账户执行

是否继续？（Y/n）
```

同意后将会执行以下流程：

```
开始逐个执行精选合并..

$ git pull origin wp/6.2 --rebase...
$ git fetch origin trunk...

发现以下待精选合并的PR：
   #41198 – 站点编辑器：设置样式预览最小宽度

正在获取提交ID... 完成！
   #41198 – 860a39665c318d33027d – 站点编辑器：设置样式预览...

开始逐个执行精选合并...

第一轮精选合并：
    精选提交：afe9b757b4  对应PR：#41198 – 站点编辑器：设置样式预览...
精选合并完成！

执行结果：
    成功精选合并 1 个PR
    合并失败 0 个PR

即将推送至 origin/wp/6.2
是否继续？（Y/n）
```

本次运行成功！此时您可以确认是否精选合并了正确的PR。

如果精选合并出现冲突怎么办？脚本会继续处理其他PR并自动重试。
若部分PR仍合并失败，脚本将跳过这些PR并告知需要手动解决冲突的节点。

无论哪种情况，当您通过精选合并阶段后：

```
正在推送至 origin/wp/6.2
添加注释并移除标签...
  41198: 已将此PR精选合并至wp/6.2分支以便纳入下一版本：afe9b757b4
完成！
```

注释功能为可选操作，仅当您安装[`gh`命令行工具](https://cli.github.com/)时可用。

### 能否使用`Backport to WP Beta/RC`之外的标签？

可以！只需将其作为第一个参数传递：

```
npm run other:cherry-pick "其他标签"
```

### 如何用于Gutenberg插件发布？

```
# 切换到发布分支
git checkout release/X.Y

# 精选合并所有带有相关回溯标签的已合并PR
npm run other:cherry-pick "Backport to Gutenberg RC"
```

### 未来改进方向

未来有望实现根据当前所选分支自动匹配对应标签：

* release/X.Y - 插件发布分支 → "Backport to Gutenberg RC"
* wp/X.Y - WordPress发布分支 → "Backport to WP Beta/RC"