# 合并堆积拉取请求

从上到下、单独或连续的组中合并堆栈。

> \[!NOTE] 此功能以公共预览版提供，可能会发生更改。

堆积拉取请求从底部（最靠近中继）向上合并。

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

## 合并要求

堆积拉取请求的合并框显示整个堆栈的状态，而不仅仅是当前拉取请求。 在堆栈中的拉取请求可以合并之前，必须执行以下操作：

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

例如，如果堆栈不是线性的，在将更改推送到下分支或向前移动中继后， **“存储库堆栈** ”按钮将显示在合并框中，你需要在合并之前重新设置堆栈基础。

> \[!NOTE]
>
> * 如果通过 API 合并并想要使用堆叠拉取请求，则需要更新代码以使用新的堆栈合并 API。 请参阅“[REST 和 GraphQL API 中的堆积拉取请求](/zh/pull-requests/reference/stacked-pull-requests-rest-and-graphql-apis)”。
> * 堆叠拉取请求不支持自动合并。

## 使用合并队列合并

堆栈完全支持合并队列。 堆栈中的所有拉取请求都按正确的顺序添加到队列中。 如果从队列中删除或弹出拉取请求，也会删除堆栈中其上方的所有拉取请求。

> \[!NOTE]
> 为了将堆栈放在一起，合并队列允许合并组超过其配置的最大大小高达 50%。 如果堆栈太大而无法容纳在该缓冲区中，它将自动拆分为连续合并组。

## 从下到上合并

1. 如果要将连续组合并到该点，请导航到堆栈中最低的未合并拉取请求，或导航到更高的拉取请求。

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

3. 合并拉取请求。 所选拉取请求及其下面所有未合并的拉取请求作为单个操作一起登陆基分支，从生成的历史记录中从下到下排序。

合并后，下一个未合并的拉取请求会自动重新定基以直接定位堆栈基础，因此它会移动到底部，并准备好查看和合并。

堆栈中的每个拉取请求合并后，堆栈即已完成且无法扩展。 如果在顶部添加新的分支并运行 `gh stack submit`， GitHub CLI 则会自动启动这些分支的中继上根的新堆栈。