# 堆积拉取请求快速入门

在 gh stack 其中安装扩展 GitHub CLI 并创建第一组堆积拉取请求。

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

使用堆积拉取请求将大型代码更改分解成可以独立查看和合并的较小依赖拉取请求链。

堆栈是同一存储库中的一系列拉取请求，每个拉取请求都面向其下方的拉取请求的分支，形成位于单个分支（通常是主分支）上的有序链。 获取一组较小的拉取请求，而不是一个大型拉取请求。 由于每个拉取请求都有自己的重点差异，因此团队成员可以独立评审和批准每个层。

## Prerequisites

* GitHub CLI （`gh`） 2.90.0 或更高版本，以及 Git 2.20 或更高版本。
  * 使用 `gh auth login`. 进行身份验证GitHub CLI。
* 可以推送到的 GitHub 存储库。

## 安装 CLI 扩展

```shell copy
gh extension install github/gh-stack
```

> \[!TIP]
> 若要将堆积拉取请求与 AI 编码代理一起使用，例如 GitHub Copilot安装 `gh-stack` 技能。
>
> ```shell copy
> gh skill install github/gh-stack
> ```

## 创建第一个堆栈

1. 若要初始化堆栈，请导航到存储库并运行以下命令。 这会创建跟踪条目和第一个分支。

   ```shell copy
   gh stack init
   ```

   系统会提示你为第一个分支命名。 默认情况下，堆栈使用存储库的默认分支（例如 `main`），作为中继，但堆栈可以面向任何分支。

2. 像往常一样处理第一个分支：编写代码、暂存更改和提交。

   ```shell
   # ... write code ...
   git add .
   git commit -m "helpful-commit-message"
   ```

3. 准备好下一个逻辑工作单元后，向堆栈顶部添加新分支。

   ```shell copy
   gh stack add BRANCH-NAME
   # ... write code ...
   git add .
   git commit -m "Another-helpful-commit-message"
   ```

4. 将所有分支推送到远程。

   ```shell copy
   gh stack push
   ```

5. 创建拉取请求并将其链接为堆栈。GitHub

   ```shell copy
   gh stack submit
   ```

   每个拉取请求都是使用正确的基分支创建的。 你的第一个分支目标 `main`，下一个分支面向第一个分支 `BRANCH-NAME` 。 审阅者将只看到该层的差异。 拉取请求作为堆栈 GitHub 自动链接在一起，你可以看到其顺序并在它们之间快速导航。

6. 查看堆栈并随时查看完整状态。

   ```shell copy
   gh stack view
   ```

   此命令显示所有分支、其拉取请求链接、状态以及每个分支的最新提交。

7. 用于 `gh stack add -Am "MESSAGE"` 在一个步骤中暂存所有更改、提交和创建下一分支。 不需要单独`git add``git commit`或 。 如果当前分支尚未提交，则提交将到达该处;如果已提交，则会创建一个新分支。

   ```shell
   # Commit lands on the current branch
   gh stack add -Am "Auth middleware"

   # Current branch already has commits, so this creates the next branch
   gh stack add -Am "API routes"
   ```

8. 准备就绪后，推送所有内容并创建拉取请求。

   ```shell copy
   gh stack submit
   ```

## 后续步骤

* [管理堆积拉取请求](/zh/pull-requests/how-tos/create-pull-requests/managing-stacked-pull-requests)
* [合并堆积拉取请求](/zh/pull-requests/how-tos/merge-and-close-pull-requests/merging-stacked-pull-requests)
* [拉取请求中堆栈 AI 生成的代码](/zh/copilot/tutorials/stack-ai-generated-code-in-pull-requests)
* [向组织推出堆积拉取请求](/zh/pull-requests/tutorials/roll-out-stacked-prs)