Skip to main content

将拉取请求与合并队列合并

如果分支的分支保护设置需要合并队列,可以将拉取请求添加到合并队列中,一旦所有必需的检查通过,GitHub 将合并拉取请求。

谁可以使用此功能?

拉取请求合并队列在组织拥有的任何公共存储库中均处于可用状态,或在使用 GitHub Enterprise Cloud 的组织拥有的专用存储库中处于可用状态。 有关详细信息,请参阅“GitHub 的计划”。

Tool navigation

关于合并队列

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

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

如果分支具有每天从许多不同用户合并的大量拉取请求,那么使用合并队列特别有用。

拉取请求通过所有必需的分支保护检查后,对存储库具有写入访问权限的用户可以将该拉取请求添加到该队列。 合并队列将确保拉取请求的更改在应用于最新版本的目标分支和队列中已有的任何拉取请求时通过所有必需的状态检查。

合并队列可以使用 GitHub Actions 或你自己的 CI 提供程序对合并队列中的拉取请求运行所需的检查。 有关详细信息,请参阅“GitHub Actions 文档”。 有关合并队列的详细信息,请参阅“管理合并队列”。

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

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

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击 “拉取请求”。

    存储库的主页的屏幕截图。 在水平导航栏中,标记为“拉取请求”的选项卡以深橙色标出。

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

  4. 单击“准备就绪后合并”,将拉取请求添加到合并队列。 或者,如果你是管理员,可以执行以下操作:

    • 如果分支保护设置允许,通过选中合并而不等待满足要求(绕过分支保护) 直接合并拉取请求,并遵循标准流程。

    拉取请求的合并队列选项的屏幕截图。

    注意:只要准备好合并建议的更改,就可以单击“准备就绪后合并” 。 一旦满足所需的审批和状态检查条件,GitHub 会自动将拉取请求添加到合并队列中。

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

通过 GitHub CLI,可以使用 gh pr merge 命令将拉取请求添加到合并队列。 如果面向需要合并队列的分支,则此命令会自动将拉取请求添加到队列(如果需要的检查已通过)。 如果需要的检查尚未通过,此命令将启用拉取请求的自动合并。 有关详细信息,请参阅 GitHub CLI 手册中的 gh pr merge

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

若要从合并队列中删除拉取请求,必须导航到 GitHub.com 上的存储库页面。 不能使用 GitHub CLI 从合并队列中删除拉取请求。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击 “拉取请求”。

    存储库的主页的屏幕截图。 在水平导航栏中,标记为“拉取请求”的选项卡以深橙色标出。

  3. 在“拉取请求”列表中,单击要从合并队列中删除的拉取请求。

  4. 若要从队列中删除拉取请求,请单击“从队列中删除”。

    拉取请求底部的合并队列消息的屏幕截图。 “从队列中移除”按钮以深橙色轮廓显示。

或者,可以导航到基础分支的合并队列页,单击要删除的拉取请求旁边的“...”,然后选择“从队列中删除” 。 有关如何访问基本分支的合并队列页的信息,请参阅下面的部分。

查看合并队列

可以在 GitHub 上的不同位置查看基础分支的合并队列。 不能使用 GitHub CLI 查看合并队列。

可以在 GitHub 上的不同位置查看基础分支的合并队列。

  • 在存储库的“分支”页上。 如果你没有拉取请求或不知道队列中已有拉取请求,并且想要查看队列中的内容,我们建议你使用此路径。 有关详细信息,请参阅“查看仓库中的分支”。

    存储库的“分支”页的屏幕截图。 标记为“33 个拉取请求排队等待合并”的链接以深橙色轮廓显示。

  • 在需要合并队列进行合并时,在拉取请求页上,滚动到时间线底部并单击“合并队列”链接。

    拉取请求底部的合并队列消息的屏幕截图。 “合并队列”链接以深橙色轮廓显示。

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

    合并队列的屏幕截图。

了解从合并队列中删除拉取请求的原因

在将拉取请求与目标分支的最新版本分组并在队列中提前更改后,如果所需的状态检查失败或与基础分支冲突,将从队列中删除拉取请求。 拉取请求时间线将显示从队列中删除拉取请求的原因。

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

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