# 将其他工具与堆积拉取请求配合使用

将堆积拉取请求与 Jujutsu、Sapling 或 git-town 等工具配合使用。

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

堆积拉取请求是基于标准 Git 分支和常规拉取请求构建的 `gh stack` ，因此可以选择使用 CLI 以外的工具进行本地工作流。 如果使用另一个工具（例如 Jujutsu（jj）、Sapling 或 git-town 管理分支链，则可以使用 `gh stack link` 命令将这些分支作为堆栈 GitHub打开。

该 `gh stack link` 命令仅调用 GitHub API 来创建堆叠拉取请求 ， 它不会创建任何本地跟踪。 如果分支已有打开的拉取请求， `link` 则使用它;否则，它会使用正确的基分支创建草稿拉取请求。

## 将分支链接为堆栈

1. 使用所选工具在本地创建分支链。 例如，使用 Jujutsu：

   ```shell
   jj new main -m "first change"
   jj bookmark create change1 --revision @

   jj new -m "second change"
   jj bookmark create change2 --revision @

   jj new -m "third change"
   jj bookmark create change3 --revision @
   ```

2. 推送分支并将其作为堆栈链接，从底部到顶部列出。

   ```shell
   gh stack link change1 change2 change3
   ```

   这会推送分支，为每个分支创建一个具有正确基础的拉取请求，并将其作为堆栈链接在一 GitHub起。

## 添加到现有堆栈

若要向创建的 `link`堆栈添加更多分支，请从下到上再次运行 `gh stack link` ，其中包含堆栈中拉取请求和分支 **的完整** 列表。 可以按数字引用现有拉取请求。

```shell
gh stack link 123 124 125 change4 change5
```

## 设置基分支或打开拉取请求

默认情况下， `link` 面向存储库的默认分支并创建草稿拉取请求。 若要更改此行为，请执行以下操作：

* 用于 `--base` 指定不同的中继分支。
* 用于 `--open` 将拉取请求标记为准备审阅而不是草稿。

```shell
gh stack link --base develop --open change1 change2 change3
```

## 采用分支进行完全本地跟踪

如果想要完整的本地堆栈跟踪，因此可以使用命令（如 `gh stack rebase`和 `gh stack sync`堆栈导航）改用现有的分支 `gh stack init` ，然后提交它们。

```shell
gh stack init change1 change2 change3
gh stack submit
```

## 延伸阅读

* [堆积拉取请求](/zh/pull-requests/reference/stacked-pull-requests)