跳至主要内容

使用合并队列合并拉取请求

如果分支保护设置要求分支使用合并队列,则可以将拉取请求添加到合并队列,GitHub 将在所有必需的检查通过后为您合并拉取请求。

谁可以使用此功能?

拉取请求合并队列适用于任何组织拥有的公共仓库,或使用 GitHub Enterprise Cloud 的组织拥有的私有仓库。有关更多信息,请参阅“GitHub 的计划”。

关于合并队列

合并队列通过自动将拉取请求合并到繁忙的分支并确保分支不会因不兼容的更改而中断,从而帮助提高速度。

合并队列提供与 **“合并前要求分支是最新的”** 分支保护相同的优势,但不要求拉取请求作者更新其拉取请求分支并等待状态检查完成,然后再尝试合并。

在每天有许多不同用户合并大量拉取请求的分支上,使用合并队列特别有用。

一旦拉取请求通过了所有必需的分支保护检查,具有仓库写入权限的用户就可以将拉取请求添加到队列中。合并队列将确保拉取请求的更改在应用到目标分支的最新版本以及队列中已有的任何拉取请求时,通过所有必需的状态检查。

合并队列可以使用 GitHub Actions 或您自己的 CI 提供商来对合并队列中的拉取请求运行必需的检查。有关更多信息,请参阅“GitHub Actions 文档”。有关合并队列的更多信息,请参阅“管理合并队列”。

将拉取请求添加到合并队列

注意:您可以使用 GitHub CLI 将拉取请求添加到合并队列。有关更多信息,请单击本文顶部的“GitHub CLI”选项卡。

  1. 在 GitHub.com 上,导航到仓库的主页。

  2. 在您的仓库名称下,单击 拉取请求.

    Screenshot of the main page of a repository. In the horizontal navigation bar, a tab, labeled "Pull requests," is outlined in dark orange.

  3. 在“拉取请求”列表中,单击您要添加到合并队列的拉取请求。

  4. 单击准备就绪时合并将拉取请求添加到合并队列。或者,如果您是管理员,您可以

    • 通过选中在未满足要求的情况下合并(绕过分支保护)直接合并拉取请求(如果分支保护设置允许),并遵循标准流程。

    Screenshot of the merge queue options for a pull request.

    注意:当您准备好合并建议的更改时,可以随时单击准备就绪时合并。一旦满足了必需的批准和状态检查条件,GitHub 将自动将拉取请求添加到合并队列。

  5. 单击确认准备就绪时合并,确认您要将拉取请求添加到合并队列。

使用 GitHub CLI,您可以使用 gh pr merge 命令将拉取请求添加到合并队列。如果您要定位需要合并队列的分支,此命令将在满足必需的检查后自动将拉取请求添加到队列。如果未通过必需的检查,此命令将为拉取请求启用自动合并。有关更多信息,请参阅 GitHub CLI 手册中的 gh pr merge

从合并队列中删除拉取请求

要从合并队列中移除拉取请求,您需要导航到 GitHub.com 上的仓库页面。您无法使用 GitHub CLI 从合并队列中移除拉取请求。

  1. 在 GitHub.com 上,导航到仓库的主页。

  2. 在您的仓库名称下,单击 拉取请求.

    Screenshot of the main page of a repository. In the horizontal navigation bar, a tab, labeled "Pull requests," is outlined in dark orange.

  3. 在“拉取请求”列表中,点击您想要从合并队列中移除的拉取请求。

  4. 要从队列中移除拉取请求,请点击 **从队列中移除**。

    Screenshot of the merge queue message at the bottom of a pull request. The "Remove from queue" button is outlined in dark orange.

或者,您可以导航到目标分支的合并队列页面,点击您想要移除的拉取请求旁边的 **...**,然后选择 **从队列中移除**。有关如何访问目标分支的合并队列页面的信息,请参见下面的部分。

查看合并队列

您可以在 GitHub 上的多个位置查看目标分支的合并队列。您无法使用 GitHub CLI 查看合并队列。

您可以在 GitHub 上的多个位置查看目标分支的合并队列。

  • 在仓库的 **分支** 页面上。如果您没有或不知道已经排队的拉取请求,并且您想查看队列中的内容,我们建议您使用此方法。有关更多信息,请参见 "查看仓库中的分支"。

    Screenshot of the "Branches" page for a repository. A link, labeled "33 pull requests queued to merge," is outlined in dark orange.

  • 在拉取请求页面上,当合并需要合并队列时,滚动到时间线的底部,点击 **合并队列** 链接。

    Screenshot of the merge queue message at the bottom of a pull request. The "merge queue" link is outlined in dark orange.

  • 合并队列视图显示当前队列中的拉取请求,您的拉取请求将被清楚地标记。

    Screenshot of the merge queue.

了解您的拉取请求为何从合并队列中移除

在将拉取请求与目标分支的最新版本以及队列中领先于它的更改分组后,如果存在失败的必需状态检查或与目标分支的冲突,则拉取请求将从队列中移除。拉取请求时间线将显示拉取请求从队列中移除的原因。

拉取请求从合并队列中移除的原因有很多。

  • 配置的 CI 服务报告了合并组的测试失败。
  • 根据配置的超时设置,等待成功的 CI 结果超时。
  • 用户通过 API 或合并队列界面请求移除。
  • 无法自动解决的分支保护失败