Skip to main content

合并堆叠式拉取请求

自下而上合并堆栈,可以逐个合并,或以连续分组的方式合并。

注意

此功能以公共预览版提供,可能会发生更改。

堆栈式拉取请求按自下而上的顺序合并(从最接近主干分支的开始)。

  • 只要这些拉取请求从编号最小的未合并拉取请求开始构成一个连续的组,就可以一次性合并任意数量的拉取请求。
  • 不能以隔离的方式合并中间堆栈拉取请求,其下方的拉取请求将始终与其合并。

合并要求

堆积拉取请求的合并框显示整个堆栈的状态,而不仅仅是当前拉取请求。 在请求栈中的拉取请求可以合并之前,必须满足以下条件:

  • 其下方的所有拉取请求都获得批准,并已通过检查。
  • 堆栈具有线性历史记录。
  • 当前拉取请求满足堆栈基的所有分支保护要求,例如 main

如果堆栈不是线性的,例如在更改被推送到较低层级的分支之后,或者主干分支继续向前推进之后,合并框中将会显示一个 变基堆栈 按钮,你需要先对堆栈进行变基,然后才能合并。

注意

  • 如果通过 API 合并并想要使用堆叠拉取请求,则需要更新代码以使用新的堆栈合并 API。 请参阅“堆积拉取请求 API 和 Webhook”。
  • 堆栈式拉取请求不支持自动合并。

使用合并队列进行合并

堆栈完全支持合并队列。 堆栈中的所有拉取请求都按正确的顺序添加到队列中。 如果某个拉取请求被从队列中移除或移出,则该堆栈中位于其上方的所有拉取请求也会被移除。

注意

为了保持堆栈的整体性,合并队列允许合并组的大小超出所配置的最大限制,最多可超出 50%。 如果堆栈太大而无法容纳在该缓冲区中,它将自动拆分为连续合并组。

从下到上合并

  1. 导航到堆栈中最低的未合并拉取请求;如果你想合并截至该位置的一组连续拉取请求,则导航到更高的拉取请求。

  2. 确认拉取请求及其下的所有拉取请求都满足合并要求。

  3. 合并该拉取请求。 所选拉取请求及其下方所有尚未合并的拉取请求会通过一次操作一并合并到基分支,并在生成的历史记录中按自下而上的顺序排列。

合并完成后,下一个未合并的拉取请求会自动变基,直接指向堆栈的基础分支,从而移至堆栈底部,随时可以评审和合并。

堆栈中的每个拉取请求合并后,堆栈即已完成且无法扩展。 如果你在顶部新增分支并运行 gh stack submit,GitHub CLI 会自动为这些分支创建一个以主干为根的新堆栈。