# 自动化精选合并

`npm run other:cherry-pick` 可自动将带有特定标签的 Pull Request 精选合并到**当前分支**。

这对于主要的 WordPress 版本发布特别有用，因为默认情况下脚本会查找带有 `Backport to WP Beta/RC` 标签且已合并的 Pull Request。

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

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

```
您当前在 "wp/6.2" 分支。
本脚本将：
• 将标记为 "Backport to WP Beta/RC" 的已合并 PR 精选合并到此分支
• 询问您是否要推送此分支
• 在每个 PR 上添加评论
• 从每个 PR 中移除标签

后两个操作将使用您链接到 GitHub CLI（gh 命令）的
GITHUB 账户来执行

是否继续？(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 已被精选合并。

如果精选合并未能顺利应用怎么办？脚本会应用其余部分并重试。
如果某些精选合并仍然失败，脚本会跳过它们并告知您哪些冲突需要手动解决。

无论哪种情况，一旦您通过精选合并阶段，将发生以下操作：

```
推送到 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"