# 排查堆积拉取请求问题

解决堆积拉取请求的常见问题，包括重新数据库冲突、阻止合并、中断的操作和合并队列问题。

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

本文介绍使用堆积拉取请求时可能会遇到的常见问题，以及如何解决这些问题。

## 存储库报告冲突

当级联存储库遇到冲突时， `gh stack rebase` 停止并列出冲突的文件。

若要解决冲突并继续：

1. 打开每个冲突的文件并解决冲突标记（`<<<<<<<`、、`=======``>>>>>>>`）。

2. 暂存已解析的文件。

   ```shell
   git add .
   ```

3. 继续重定基。 其余分支会自动重新定基。

   ```shell
   gh stack rebase --continue
   ```

如果冲突过于复杂或要重新开始，请中止重新数据库以将所有分支还原到其预重新数据库状态。

```shell
gh stack rebase --abort
```

## 由于冲突而停止同步

如果在运行时 `gh stack sync`检测到冲突，所有分支将还原到其原始状态，因此不会部分更新任何分支。 通过直接运行存储库以交互方式解决冲突，然后推送更新的分支。

```shell
gh stack rebase
gh stack push
```

## 修改会话不会启动

`gh stack modify` 需要干净启动状态。 如果它不会启动，请确认：

* 已签出活动堆栈。
* 工作树干净。
* 没有正在进行的重新基。
* 没有请求请求排队进行合并。
* 提交历史记录是线性的。 如果不是，请先运行 `gh stack rebase` 。

## 修改会话中断

例如，如果 `gh stack modify` 由于不想解决的冲突或终端崩溃而中断，则可以将堆栈还原到启动前的状态。 预修改快照缓存在本地进行恢复。

```shell
gh stack modify --abort
```

如果应用更改时发生冲突，并且你想要继续前进，请解决冲突，暂存文件 `git add`，然后运行 `gh stack modify --continue`。

## 拉取请求无法合并

堆栈中的拉取请求只能在它之后合并，并且每个拉取请求都满足所有合并要求，并且堆栈具有完全线性的历史记录。 如果阻止合并，请检查：

* 拉取请求及其下方的所有拉取请求都具有所需的评审和通过检查。
* 堆栈具有线性历史记录。 如果更改被推送到下分支或中继向前移动，则历史记录可能不再是线性的。

若要还原线性历史记录，请运行 `gh stack rebase` ，然后单击 `gh stack push`合并框中的 **Rebase 堆栈** 。 有关说明，请参阅“[管理堆积拉取请求](/zh/pull-requests/how-tos/create-pull-requests/managing-stacked-pull-requests)”。

## 合并在堆栈中停止了部分路

合并前检查在任何合并之前运行，但合并仍可能失败。 例如，由于发生意外冲突或间歇性故障。 如果失败在一定程度上发生，合并会在该拉取请求处停止。

* 将请求拉取到合并成功保留在基分支上的请求。
* 失败的拉取请求及其上方的拉取请求保持打开状态。

解决失败拉取请求的问题，然后重试合并以将堆栈的其余部分搁置。

## 从合并队列中删除了拉取请求

堆栈保存在合并队列中。 如果从队列中删除或弹出拉取请求，则堆栈中上方的所有拉取请求也会弹出并删除。 解决基础问题后，将堆栈重新添加到队列。

大型堆栈还可以在连续合并组之间拆分：合并队列允许合并组超过其配置的最大大小 50%，以将堆栈一起保留在一起，并且所有不适合在后续组中的拉取请求在完整堆栈降落之前继续。

## 在堆栈中间关闭拉取请求

关闭堆栈中间的拉取请求会阻止其上方的所有拉取请求可合并。 保留堆栈关系，因此若要打开不同的拉取请求或更改堆栈的结构，必须先解散堆栈，然后重新创建它。

可以从网站取消堆栈， GitHub 或者使用 `gh stack modify`.. 取消堆栈仅删除打开、草稿和关闭的拉取请求;合并拉取请求和排队拉取请求保留在堆栈中。 请参阅 [管理堆积拉取请求](/zh/pull-requests/how-tos/create-pull-requests/managing-stacked-pull-requests#unstacking-from-the-github-website) 和 [管理堆积拉取请求](/zh/pull-requests/how-tos/create-pull-requests/managing-stacked-pull-requests#restructuring-a-stack)。

## 重新数据库后未对提交进行签名

从拉取请求触发的存储库在 GitHub服务器上运行，并且 **这些提交未** 签名。 如果存储库需要签名的提交，请改用存储库 GitHub CLI 。

* 运行 `gh stack rebase` 使用本地 Git 操作，因此生成的提交遵循本地 Git 提交签名配置。
* 重新分组后，使用 <c0 />\<a0/\&a0> 推送更新的分支。

## 不能跨分叉创建堆栈

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