跳至主要内容

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

如果分支保护设置要求分支使用合并队列,则可以将拉取请求添加到合并队列,一旦所有必需的检查通过,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 或合并队列界面请求移除
  • 无法自动解决的分支保护失败