跳至主要内容

理解代码空间的生命周期

了解如何在 GitHub Codespaces 环境中进行开发,并在整个代码空间生命周期中维护您的数据。

注意

本文解释了代码空间从创建到删除的各个阶段。如果您已阅读 GitHub Codespaces 入门指南 并且现在想在自己的工作中使用 GitHub Codespaces,请参阅 在代码空间中开发 下的文章。

代码空间生命周期概述

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

创建代码空间

当您想要处理项目时,可以选择创建一个新的代码空间或打开已有的代码空间。您可能希望在每次使用 GitHub Codespaces 开发时,从仓库的某个分支创建新的代码空间,或为某个特性保留一个长期运行的代码空间。如果您正在启动一个新项目,可能希望从模板创建代码空间,随后发布到 GitHub 上的仓库。有关更多信息,请参阅 为仓库创建代码空间从模板创建代码空间

创建代码空间的数量以及同时运行的代码空间数量都有上限。这些上限取决于多种因素。如果您已达到代码空间的最大数量并尝试创建另一个,会显示一条消息,提示您必须删除现有的代码空间才能创建新的。同样,如果您已达到活跃代码空间的最大数量并尝试启动另一个系统,会提示您停止其中一个活跃的代码空间。

如果您选择在每次处理项目时创建新的代码空间,应该定期推送更改,以便新提交能够在 GitHub 上保存。如果您选择为项目使用长期运行的代码空间,则每次在代码空间中开始工作时,都应从仓库的默认分支拉取代码,以确保您的环境拥有最新的提交。这种工作流程与在本地机器上处理项目非常相似。

为了加快代码空间的创建速度,仓库管理员可以为仓库启用 GitHub Codespaces 预构建。有关更多信息,请参阅 GitHub Codespaces 预构建概述

在代码空间中保存更改

当您通过网页连接到代码空间时,网页编辑器会自动启用自动保存,并在延迟后保存更改。当您通过桌面运行的 Visual Studio Code 连接到代码空间时,需要自行启用自动保存。有关更多信息,请参阅 Visual Studio Code 文档中的 保存/自动保存

您的工作会保存在云端的虚拟机上。您可以关闭并停止代码空间,稍后再返回已保存的工作。如果有未保存的更改,编辑器会在退出前提示您保存。然而,如果代码空间被删除,您的工作也会随之被删除。要持久化工作,您需要提交更改并推送到远程仓库,或者如果是从模板创建的代码空间,则将工作发布到新的远程仓库。有关更多信息,请参阅 在代码空间中使用源代码管理

GitHub Codespaces 的超时设置

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

当代码空间超时后,您的数据会保留到上一次保存更改的时间点。更多信息,请参阅 在代码空间中保存更改

重建代码空间

您可以重建代码空间以应用对开发容器配置所做的更改。对于大多数使用场景,您也可以创建新的代码空间来代替重建。默认情况下,当您重建代码空间时,GitHub Codespaces 会使用缓存中的镜像以加快重建过程。或者,您可以执行完整重建,这将清除缓存并使用全新的镜像重建容器。

注意

当您在代码空间中重建容器时,位于 /workspaces 目录之外的更改会被清除。位于 /workspaces 目录内部的更改(包括您创建代码空间时克隆的仓库或模板)在重建后会被保留。更多信息,请参阅 深入了解 GitHub Codespaces

更多信息,请参阅 Dev 容器简介在代码空间中重建容器

停止代码空间

您可以随时停止代码空间。停止代码空间后,任何正在运行的进程都会被终止。代码空间中已保存的更改仍会在您下次启动时可用。终端历史记录会被保留,但终端窗口的可见内容在代码空间会话之间不会被保留。

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

只有运行中的代码空间会产生 CPU 费用。停止的代码空间仅产生存储费用。

您可能需要停止并重新启动代码空间以使更改生效。例如,如果更改了代码空间使用的机器类型,需要停止并重新启动才能使更改生效。如果遇到错误或异常情况,也可以停止代码空间并选择重新启动或删除。更多信息,请参阅 停止和启动代码空间

删除代码空间

您可以为特定任务创建代码空间,随后在将更改推送到远程分支后安全删除该代码空间。

如果您尝试删除包含未推送 git 提交的代码空间,编辑器会提示您有未推送到远程分支的更改。您可以先推送所需的更改后再删除代码空间,或继续删除代码空间及其未提交的更改。您也可以在不创建新代码空间的情况下将代码导出到新分支。更多信息,请参阅 将更改导出到分支

已停止且在指定时间内保持不活动的代码空间将被自动删除。默认情况下,非活动代码空间在 30 天后被删除,但您可以自定义代码空间的保留期限。更多信息,请参阅 配置代码空间的自动删除

如果您创建了代码空间,它将持续产生存储费用,直至删除,无论其是处于活跃状态还是已停止。更多信息,请参阅 GitHub Codespaces 计费。删除代码空间并不会降低当前的 GitHub Codespaces 可计费金额,该金额在每月计费周期内累计。更多信息,请参阅 查看计量产品和许可证的使用情况

有关删除代码空间的更多信息,请参阅 删除代码空间

使用 GitHub Codespaces 时丢失连接

GitHub Codespaces 是基于云的开发环境,需要网络连接。如果在代码空间中工作时失去互联网连接,您将无法访问代码空间,但任何未提交的更改都会被保存。当您重新获得网络连接后,仍可以以相同的状态连接到代码空间。如果您的网络不稳定,建议经常提交并推送更改。

如果您知道需要经常离线工作,可以使用 devcontainer.json 文件配合 VS Code 的 “Dev Containers” 扩展在本地为您的仓库构建并附加到开发容器。更多信息,请参阅 Visual Studio Code 文档中的 在容器内部进行开发

© . This site is unofficial and not affiliated with GitHub, Inc.