关于合并队列
合并队列通过自动将拉取请求合并到繁忙的分支并确保该分支不因不兼容的更改而被破坏,从而提升开发速度。
合并队列提供与 Require branches to be up to date before merging 分支保护相同的优势,但不需要拉取请求作者更新其分支并等待状态检查完成后再尝试合并。
在每日有相对大量来自不同用户的拉取请求合并到同一分支的情况下,使用合并队列尤为有用。
当拉取请求通过所有必需的分支保护检查后,拥有仓库写入权限的用户即可将该拉取请求加入队列。合并队列会确保在将拉取请求的更改应用到目标分支的最新版本以及队列中已有的拉取请求时,所有必需的状态检查均通过。
合并队列可以使用 GitHub Actions 或您自己的 CI 提供商来对队列中的拉取请求运行必需的检查。更多信息,请参见 GitHub Actions 文档。有关合并队列的更多信息,请参见 管理合并队列。
将拉取请求添加到合并队列
注意
您可以使用 GitHub CLI 将拉取请求添加到合并队列。更多信息,请点击本文顶部的 “GitHub CLI” 选项卡。
-
在 GitHub 上,导航至仓库的主页面。
-
在仓库名称下,点击 拉取请求。

-
在 “Pull Requests” 列表中,点击您希望添加到合并队列的拉取请求。
-
点击 Merge when ready 将拉取请求加入合并队列。或者,如果您是管理员,您可以
- 直接合并拉取请求,只需勾选 Merge without waiting for requirements to be met (bypass branch protections)(如果分支保护设置允许),随后遵循标准流程。

注意
只要您准备好合并所提议的更改,随时可以点击 Merge when ready。当满足必需的批准和状态检查条件后,GitHub 将自动将拉取请求添加到合并队列。
-
点击 Confirm merge when ready 确认您想将拉取请求加入合并队列。
使用 GitHub CLI,您可以通过 gh pr merge 命令将拉取请求加入合并队列。如果目标分支要求合并队列,并且必需的检查已通过,此命令会自动将拉取请求加入队列。如果必需的检查尚未通过,此命令会为拉取请求启用自动合并。更多信息,请参见 GitHub CLI 手册中的 gh pr merge。
从合并队列中移除拉取请求
要将拉取请求从合并队列中移除,您必须在 GitHub.com 上导航至相应仓库页面。无法使用 GitHub CLI 移除合并队列中的拉取请求。
-
在 GitHub 上,导航至仓库的主页面。
-
在仓库名称下,点击 拉取请求。

-
在 “Pull Requests” 列表中,点击您希望从合并队列中移除的拉取请求。
-
若要将该拉取请求从队列中移除,请点击 Remove from queue。

或者,您可以前往基础分支的合并队列页面,点击想要移除的拉取请求旁的 ...,并选择 Remove from queue。有关如何进入基础分支的合并队列页面,请参见以下章节。
查看合并队列
您可以在 GitHub 的多个位置查看基础分支的合并队列。无法使用 GitHub CLI 查看合并队列。
您可以在 GitHub 的多个位置查看基础分支的合并队列。
-
在仓库的 Branches 页面上。如果您不知道或不确定已有拉取请求是否已在队列中,以及想要了解队列内容,建议使用此入口。更多信息,请参见 在仓库中查看分支。

-
在需要合并队列才能合并的拉取请求页面,滚动至时间线底部并点击 merge queue 链接。

-
合并队列视图显示当前排队的拉取请求,并会明确标记出您的拉取请求。

了解为何您的拉取请求已从合并队列中移除
在将拉取请求与目标分支的最新版本以及队列中其前面的更改进行分组后,如果出现必需的状态检查失败或与基础分支冲突,拉取请求将被从队列中移除。拉取请求的时间线会显示被移除的原因。
导致拉取请求从合并队列中被移除的原因有多种
- 已配置的 CI 服务报告合并组的测试失败
- 基于配置的超时时间设置,等待成功的 CI 结果超时
- 用户通过 API 或合并队列界面请求移除
- 分支保护失败且无法自动解决