# 创建堆积拉取请求

使用扩展在扩展中GitHub CLI或直接创建gh stackGitHub依赖拉取请求的堆栈。

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

使用 `gh stack` 扩展在 GitHub CLI 网站或 GitHub 网站上创建堆叠拉取请求。

> \[!NOTE]
> 堆积拉取请求要求所有分支都位于同一存储库中。 不支持跨分支堆栈。

## 使用 \<a0/a0> 创建堆栈 <c0 />

1. 初始化堆栈。 这会创建并签出主干分支顶部的第一个分支。

   ```shell copy
   gh stack init auth-layer
   ```

2. 为第一层编写代码，然后暂存并提交更改。

   ```shell copy
   git add .
   git commit -m "helpful-commit-message"
   ```

3. 为下一个逻辑工作单元添加分支。 新分支在当前分支的顶部创建。

   ```shell copy
   gh stack add BRANCH-NAME
   ```

4. 在新分支上编写代码并提交。 对每个附加层重复此操作。

5. 将所有分支推送到远程存储库，并在其上 GitHub创建堆叠拉取请求。

   ```shell copy
   gh stack submit
   ```

   每个拉取请求都是使用正确的基分支创建的，因此审阅者只能看到该层的差异，并且拉取请求会自动作为堆栈链接在一起。

## 从 GitHub 网站创建堆栈

可以通过将每个拉取请求的基分支设置为其下方的分支来创建没有 CLI 的堆栈。

1. 像平常一样创建第一个拉取请求。 通常，你的基地会以目标为目标 `main`。

2. 创建下一个拉取请求，并将其基分支设置为第一个拉取请求的分支。 选择“ **创建堆栈** ”选项，将两个拉取请求作为堆栈链接在一起。

   创建后，堆栈会显示链接在一起的拉取请求。

   * 拉取请求顶部的堆栈图标 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-stack" aria-label="The stack icon" role="img"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg> 显示一个数字，指示正在查看哪个层。
   * 堆栈映射显示在合并框中。 它显示堆栈中的每个拉取请求及其状态，并允许你单击一次导航到任何层。

3. 对每个额外的拉取请求重复，针对请求的分支，再针对请求的分支。

## 将现有拉取请求转换为堆栈

如果已打开拉取请求，其分支会排队，其中每个拉取请求的基分支是其下方拉取请求的头分支， GitHub 可识别链并显示 **建议横幅** ，以将其转换为堆栈。

1. 在任何符合条件的拉取请求中，选择横幅以打开预览堆栈的对话框，按从上到下的顺序列出每个拉取请求。

2. 查看预览并确认将拉取请求链接到堆栈中。

确认后，堆栈映射将显示在每个拉取请求的标头中。

## 从 GitHub 网站添加到现有堆栈

若要向已存在的堆栈添加新拉取请求，请执行以下操作：

1. 在堆栈中打开任何拉取请求，单击 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-stack" aria-label="The stack icon" role="img"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>** 标头，然后单击“ **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="Add button" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg> 添加到堆栈**”。

2. 基本分支会自动设置为顶部拉取请求的头。 选择新拉取请求的头分支，然后选择“ **创建拉取请求**”。

3. 选择 **“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="Add button" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg>添加到堆栈**”以创建拉取请求。

新的拉取请求将添加到堆栈的顶部。

## 延伸阅读

* [堆积拉取请求 CLI 命令](/zh/pull-requests/reference/stacked-prs-cli-commands)