跳到主要内容

了解 Codespace 生命周期

您可以在 GitHub Codespaces 环境中进行开发,并在整个 Codespace 生命周期中维护您的数据。

本文介绍了 Codespace 生命周期的各个阶段,从创建到删除。如果您已经阅读了“GitHub Codespaces 快速入门”文章,并且现在想要开始将 GitHub Codespaces 用于自己的工作,请参阅“在 Codespace 中开发”下的文章。

关于 Codespace 的生命周期

Codespace 的生命周期从您创建 Codespace 开始,到您删除 Codespace 结束。您可以断开连接并重新连接到活动的 Codespace,而不会影响其正在运行的进程。您可以停止并重新启动 Codespace,而不会丢失对项目所做的更改。

创建 Codespace

当您想要处理项目时,您可以选择创建一个新的 Codespace 或打开一个现有的 Codespace。您可能希望每次在 GitHub Codespaces 中进行开发时都从代码库的分支创建一个新的 Codespace,或者为某个功能保留一个长期运行的 Codespace。如果您正在启动一个新项目,您可能希望从模板创建一个 Codespace,然后稍后发布到 GitHub 上的代码库。有关详细信息,请参阅“为代码库创建 Codespace”和“从模板创建 Codespace”。

您可以创建和同时运行的 Codespace 数量有限制。这些限制取决于多种因素。如果达到 Codespace 的最大数量并尝试创建另一个 Codespace,系统会显示一条消息,告知您必须先移除现有的 Codespace 才能创建新的 Codespace。同样,如果您达到活动 Codespace 的最大数量并尝试启动另一个 Codespace,系统会提示您停止其中一个活动的 Codespace。

如果您选择在每次处理项目时都创建一个新的 Codespace,则应定期推送您的更改,以便所有新的提交都位于 GitHub 上。如果您选择为您的项目使用长期运行的 Codespace,则应在每次开始在 Codespace 中工作时都从存储库的默认分支拉取,以便您的环境拥有最新的提交。此工作流程与您在本地计算机上处理项目时非常相似。

为了加快 Codespace 的创建速度,存储库管理员可以为存储库启用 GitHub Codespaces 预构建。有关更多信息,请参阅“关于 GitHub Codespaces 预构建”。

在 Codespace 中保存更改

当您通过 Web 连接到 Codespace 时,Web 编辑器的自动保存功能会自动启用,并配置为在一段时间后保存更改。当您通过在桌面上运行的 Visual Studio Code 连接到 Codespace 时,您必须启用自动保存。有关更多信息,请参阅 Visual Studio Code 文档中的保存/自动保存

您的工作将保存在云中的虚拟机上。您可以关闭并停止 Codespace,并在以后返回到已保存的工作。如果您有未保存的更改,编辑器会在您退出之前提示您保存它们。但是,如果您的 Codespace 被删除,您的工作也将被删除。要保留您的工作,您需要提交您的更改并将其推送到您的远程存储库,或者如果您是从模板创建的 Codespace,则将您的工作发布到新的远程存储库。有关更多信息,请参阅“在 Codespace 中使用源代码管理”。

GitHub Codespaces 的超时

如果您在没有交互的情况下让 Codespace 运行,或者在没有显式停止 Codespace 的情况下退出 Codespace,则 Codespace 将在一段时间不活动后超时并停止运行。默认情况下,Codespace 在 30 分钟不活动后会超时,但您可以自定义您创建的新 Codespace 的超时时间段。有关设置 Codespace 的默认超时时间的更多信息,请参阅“设置 GitHub Codespaces 的超时时间段”。有关停止 Codespace 的更多信息,请参阅“停止 Codespace”。

当 Codespace 超时时,您的数据会从上次保存更改时保留下来。有关更多信息,请参阅“在 Codespace 中保存更改”。

重建 Codespace

您可以重建 Codespace 以实现您对开发容器配置所做的更改。对于大多数用途,您可以创建一个新的 Codespace 作为重建 Codespace 的替代方法。默认情况下,当您重建 Codespace 时,GitHub Codespaces 将重用来自缓存的镜像以加快重建过程。或者,您可以执行完全重建,这将清除您的缓存并使用新的镜像重建容器。

注意

当您重建 Codespace 中的容器时,您在/workspaces目录之外所做的更改将被清除。您在/workspaces目录内所做的更改(包括您从中创建 Codespace 的存储库或模板的克隆)将在重建过程中保留。有关更多信息,请参阅“深入了解 GitHub Codespaces”。

有关更多信息,请参阅“开发容器简介”和“重建 Codespace 中的容器”。

停止 Codespace

您可以随时停止 Codespace。当您停止 Codespace 时,所有正在运行的进程都会停止。您在 Codespace 中保存的任何更改在您下次启动它时仍然可用。终端历史记录会保留,但是终端窗口的可见内容在 Codespace 会话之间不会保留。

如果您没有显式停止 Codespace,它将继续运行,直到因不活动而超时。关闭 Codespace 不会停止 Codespace。例如,如果您在 VS Code Web 客户端中使用 Codespace 并关闭浏览器标签页,则 Codespace 将继续在远程计算机上运行。有关超时的信息,请参阅“了解 Codespace 生命周期”。

只有运行中的 Codespace 才会产生 CPU 费用。已停止的 Codespace 只会产生存储费用。

您可能需要停止并重新启动 Codespace 以应用对其进行的更改。例如,如果您更改了用于 Codespace 的机器类型,则需要停止并重新启动它才能使更改生效。如果您遇到错误或意外情况,也可以停止 Codespace 并选择重新启动或删除它。有关更多信息,请参阅“停止和启动 Codespace”。

删除 Codespace

您可以为特定任务创建一个 Codespace,然后在将更改推送到远程分支后安全地删除该 Codespace。

如果您尝试删除具有未推送 git 提交的 Codespace,编辑器会通知您有一些更改尚未推送到远程分支。您可以推送任何所需的更改,然后删除您的 Codespace,或者继续删除您的 Codespace 和任何未提交的更改。您也可以将代码导出到新的分支,而无需创建新的 Codespace。有关更多信息,请参阅“将更改导出到分支”。

已停止并在指定时间段内保持不活动的 Codespace 将被自动删除。默认情况下,不活动的 Codespace 在 30 天后被删除,但您可以自定义 Codespace 保留期。有关更多信息,请参阅“配置 Codespaces 的自动删除”。

如果您创建了一个 Codespace,它将继续产生存储费用,直到它被删除,无论它是活动状态还是已停止状态。有关更多信息,请参阅“关于 GitHub Codespaces 的计费”。删除 Codespace 并不会减少 GitHub Codespaces 的当前计费金额,该金额在每个月度计费周期内累积。有关更多信息,请参阅“查看您的 GitHub Codespaces 用量”。

有关删除 Codespace 的更多信息,请参阅“删除 Codespace”。

使用 GitHub Codespaces 时失去连接

GitHub Codespaces 是一个基于云的开发环境,需要互联网连接。如果您在 Codespace 中工作时断开了与互联网的连接,您将无法访问您的 Codespace。但是,任何未提交的更改都会被保存。当您再次可以访问互联网连接时,您可以连接到您的 Codespace,其状态与离开时完全相同。如果您具有不稳定的互联网连接,则应经常提交和推送您的更改。

如果您知道您经常会离线工作,您可以将您的devcontainer.json文件与 VS Code 的"开发容器"扩展一起使用,以构建并连接到存储库的本地开发容器。有关更多信息,请参阅 Visual Studio Code 文档中的在容器内开发