# 代码空间创建和删除的故障排除

本文提供了在创建或删除代码空间时可能遇到的常见问题（包括存储和配置问题）的疑难解答步骤。

## 创建代码空间

### 没有创建代码空间的权限

GitHub Codespaces 并非对所有存储库都可用。 如果未显示用于创建 codespace 的选项，则 GitHub Codespaces 可能不适用于该存储库。

如果个人帐户中每月包含 GitHub Codespaces 的剩余使用量，或者设置了付款方式和支出限制，则可以为任何公共存储库创建 codespace。

还可以为至少具有读取访问权限的任何专用存储库创建 codespace，前提是此专用存储库归个人帐户所有。 如果存储库是专用存储库并且归组织所有，则可能可以或无法为该存储库创建 codespace，具体取决于组织或其母企业的设置。

如果无法为存储库创建 codespace，可能是由以下组织或企业设置造成的。

* 组织和企业所有者可以选择哪些用户可以访问组织的专用存储库中的 GitHub Codespaces。 有关详细信息，请参阅“[为组织启用或禁用 GitHub Codespaces](/zh/codespaces/managing-codespaces-for-your-organization/enabling-or-disabling-github-codespaces-for-your-organization)”。
* 组织和企业所有者可以禁用为组织的部分或全部专用存储库创建分支这一功能。 如果仅对存储库具有读取权限，并且无法为其创建分支，则无法为该存储库创建 codespace。 有关详细信息，请参阅 [管理组织的复刻政策](/zh/organizations/managing-organization-settings/managing-the-forking-policy-for-your-organization)。

有关可能会影响是否可以创建 codespace 的其他组织和企业设置的信息，请参阅 [为组织启用或禁用 GitHub Codespaces](/zh/codespaces/managing-codespaces-for-your-organization/enabling-or-disabling-github-codespaces-for-your-organization#prerequisites-for-enabling-github-codespaces)。

有关个人帐户包含的用量和设置支出限制的详细信息，请参阅 [GitHub Codespaces 计费](/zh/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces) 和 [设置预算以控制按流量计费的产品的支出](/zh/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces)。

### 代码空间创建后无法打开

如果创建了代码空间，但未打开：

1. 如果出现缓存或报告问题，请尝试重新加载页面。
2. 转到 GitHub Codespaces 页面： <https://github.com/codespaces> ，检查新的 codespace 是否在此处列出。 该过程可能已成功创建代码空间，但未向浏览器报告。 如果列出了新的代码空间，则可以直接从该页打开它。
3. 重试为存储库创建代码空间，以排除暂时性通信故障。

如果仍然无法为其中 GitHub Codespaces 可用的存储库创建 codespace，请 可能需要联系支持人员。 有关详细信息，请参阅“[与 GitHub Codespaces 支持协作](/zh/codespaces/troubleshooting/working-with-support-for-github-codespaces)”。

### Codespace 创建失败

如果创建 codespace 失败，则可能是由于云中的临时基础结构问题（例如，为 codespace 预配虚拟机时出现问题）。 失败的一个不太常见的原因是生成容器所需的时间超过一小时。 在这种情况下，将取消生成，并且 codespace 创建将失败。

> \[!NOTE]
> 未成功创建的 codespace 永远无法使用，应将其删除。 有关详细信息，请参阅“[删除代码空间](/zh/codespaces/developing-in-a-codespace/deleting-a-codespace)”。

如果创建代码空间并且创建失败：

1. 检查 GitHub 的[“状态”页](https://githubstatus.com)是否有任何活动事件。
2. 转到 [你的 GitHub Codespaces 页面](https://github.com/codespaces)，删除现有的代码空间，然后创建一个新的代码空间。
3. 如果容器正在构建，请查看流日志，确保构建未停滞。 超过一小时的容器构建将被取消，导致构建失败。

   发生这种情况的一种常见情况是，如果正在运行的脚本提示用户输入并等待答案。 如果是这种情况，请删除交互式提示，以便生成以非交互方式完成。

> \[!NOTE]
> 若要在生成期间查看日志，请执行以下操作：
>
> * 在浏览器中，如果生成过程的初始步骤花费的时间超过几秒钟，则会显示“设置你的 codespace”页面。 单击“查看日志”。
>
>   ![浏览器中“设置你的 codespace”页面的屏幕截图。 “查看日志”链接以深橙色轮廓突出显示。](/assets/images/help/codespaces/web-ui-view-logs.png)
>
> *

```
          **在 VS Code 桌面应用中**，在显示的“正在设置远程连接”弹出消息中点击“**正在构建代码空间**”。
```

> ![VS Code 中弹出消息的屏幕截图，内容为“设置远程连接：codespace 构建中”。](/assets/images/help/codespaces/vs-code-building-codespace.png)
>
> 日志消息打印到 VS Code 中的“终端”

1. 如果容器需要很长时间才能生成，请考虑使用预生成来加快 codespace 创建速度。 有关详细信息，请参阅“[配置预生成](/zh/codespaces/prebuilding-your-codespaces/configuring-prebuilds#configuring-prebuilds)”。

## 删除代码空间

codespace 只能通过以下方式删除：

* 创建Codespace的人员
* 组织拥有的代码空间的组织所有者
* 保留期结束时自动删除

有关详细信息，请参阅 [删除代码空间](/zh/codespaces/developing-in-a-codespace/deleting-a-codespace) 和 [配置 codespace 的自动删除](/zh/codespaces/setting-your-user-preferences/configuring-automatic-deletion-of-your-codespaces)。

## 容器存储

创建代码空间时，存储量是有限的，随着时间的推移，可能需要释放空间。 尝试在 GitHub Codespaces 终端中运行以下任一命令以释放存储空间。

* 使用 `sudo apt autoremove` 删除不再使用的包。
* 使用 `sudo apt clean` 清理 apt 缓存.
* 使用 `sudo find / -printf '%s %p\n'| sort -nr | head -10` 查看 codespace 中前 10 个最大的文件。
* 删除不需要的文件，如生成工件和日志。

一些更具破坏性的选项：

* 使用 `docker system prune` 删除未使用的 Docker 镜像、网络和容器。如果要删除所有镜像，请追加 `-a`；如果要删除所有卷，请追加 `--volumes`。
* 从工作树中删除不跟踪的文件：`git clean -i`。

## 配置

如果对 codespace 配置的更改导致容器错误，则 codespace 将在恢复模式下运行，并且你将看到错误消息。

```shell
This codespace is currently running in recovery mode due to a container error.
```

查看创建日志并根据需要更新开发容器配置。 有关详细信息，请参阅“[GitHub Codespaces 日志](/zh/codespaces/troubleshooting/github-codespaces-logs)”。

然后，可以尝试重启 codespace，或重新生成容器。 有关重新生成容器的详细信息，请参阅 [开发容器简介](/zh/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#applying-configuration-changes-to-a-codespace)。