本文档解释了 Codespace 从创建到删除的生命周期中的各个阶段。如果您已阅读“GitHub Codespaces 快速入门”文章,并且现在想要开始将 GitHub Codespaces 用于自己的工作,请参阅“在 Codespace 中进行开发”下的文章。
关于代码空间的生命周期
代码空间的生命周期从您创建代码空间开始,到您删除代码空间结束。您可以断开连接并重新连接到活动代码空间,而不会影响其正在运行的进程。您可以停止和重新启动代码空间,而不会丢失您对项目所做的更改。
创建代码空间
当您想要处理项目时,可以选择创建一个新的代码空间或打开一个现有的代码空间。您可能希望每次在 GitHub Codespaces 中开发时从存储库的分支创建一个新的代码空间,或者为某个功能保留一个长期运行的代码空间。如果您要开始一个新项目,您可能希望从模板创建一个代码空间,并在稍后发布到 GitHub 上的存储库。有关更多信息,请参阅 "为存储库创建代码空间" 和 "从模板创建代码空间."
您可以创建的代码空间数量以及可以同时运行的代码空间数量有限制。这些限制根据多种因素而有所不同。如果您达到代码空间的最大数量并尝试创建另一个代码空间,则会显示一条消息,告诉您必须删除现有代码空间才能创建新的代码空间。同样,如果您达到活动代码空间的最大数量并尝试启动另一个代码空间,则系统会提示您停止其中一个活动代码空间。
如果您选择每次处理项目时创建一个新的代码空间,则应定期推送您的更改,以便任何新的提交都位于 GitHub 上。如果您选择为您的项目使用长期运行的代码空间,则应在每次开始在代码空间中工作时从存储库的默认分支拉取,以便您的环境具有最新的提交。此工作流程与您在本地机器上处理项目时非常相似。
为了加快代码空间的创建速度,存储库管理员可以为存储库启用 GitHub Codespaces 预构建。有关更多信息,请参阅 "关于 GitHub Codespaces 预构建."
在代码空间中保存更改
当您通过网页连接到 Codespace 时,网页编辑器的自动保存功能会自动启用,并配置为在延迟后保存更改。当您通过运行在桌面上的 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 中的容器。"。
停止代码空间
您可以随时停止代码空间。当您停止代码空间时,任何正在运行的进程都会停止。您在代码空间中保存的任何更改在您下次启动时仍然可用。终端历史记录将保留,但终端窗口的可见内容不会在代码空间会话之间保留。
如果您没有显式停止代码空间,它将继续运行,直到因不活动而超时。关闭代码空间不会停止代码空间。例如,如果您在 VS Code Web 客户端中使用代码空间,并且您关闭了浏览器选项卡,则代码空间将继续在远程机器上运行。有关超时的信息,请参阅“了解代码空间生命周期”。
只有正在运行的代码空间才会产生 CPU 费用。已停止的代码空间仅产生存储费用。
您可能希望停止并重新启动代码空间以对其应用更改。例如,如果您更改了用于代码空间的机器类型,则需要停止并重新启动它才能使更改生效。您也可以停止代码空间并选择重新启动或删除它,如果您遇到错误或意外情况。有关更多信息,请参阅“停止和启动代码空间”。
删除代码空间
您可以为特定任务创建代码空间,然后在将更改推送到远程分支后安全地删除代码空间。
如果您尝试删除具有未推送的 git 提交的代码空间,您的编辑器会通知您有未推送到远程分支的更改。您可以推送任何所需的更改,然后删除代码空间,或者继续删除代码空间和任何未提交的更改。您也可以将代码导出到新分支,而无需创建新的代码空间。有关更多信息,请参阅“将更改导出到分支”。
已停止并在指定时间段内保持不活动的代码空间将被自动删除。默认情况下,不活动的代码空间将在 30 天后被删除,但您可以自定义代码空间保留期限。有关更多信息,请参阅“配置代码空间的自动删除”。
如果您创建了代码空间,它将继续产生存储费用,直到您将其删除,无论它处于活动状态还是已停止。有关更多信息,请参阅“关于 GitHub Codespaces 的计费”。删除代码空间不会减少 GitHub Codespaces 的当前计费金额,该金额在每个月度计费周期内累积。有关更多信息,请参阅“查看您的 GitHub Codespaces 使用情况”。
有关删除代码空间的更多信息,请参阅“删除代码空间”。
使用 GitHub Codespaces 时断开连接
GitHub Codespaces 是一种基于云的开发环境,需要互联网连接。如果您在代码空间中工作时断开了与互联网的连接,您将无法访问您的代码空间。但是,任何未提交的更改都将被保存。当您再次访问互联网连接时,您可以连接到您的代码空间,其状态与您离开时完全相同。如果您有不稳定的互联网连接,您应该经常提交和推送您的更改。
如果您知道您经常会离线工作,您可以使用您的 devcontainer.json
文件和 VS Code 的 "Dev Containers" 扩展 为您的存储库构建和连接到本地开发容器。有关更多信息,请参阅 Visual Studio Code 文档中的 在容器内开发。