Codespace 生命周期
GitHub Codespaces 是可配置的,可用于为项目创建自定义开发环境。 通过为项目配置自定义开发环境,可以为项目的所有用户提供可重复的 Codespace 配置。
一个 Codespace 的生命周期从创建它时开始,到删除它时结束。 可以断开连接并重新连接到活动 Codespace,而不会影响其正在运行的进程。 可以停止并重启 Codespace,而不会丢失对项目所做的更改。
创建 Codespace
可以在 GitHub.com 上、在 Visual Studio Code 中或通过 GitHub CLI 创建 Codespace。 可通过四种方式创建 Codespace:
- 通过 GitHub.com 上的 GitHub 模板或任何模板存储库,启动一个新项目。
- 通过存储库中的分支,进行新功能工作。
- 从打开的拉取请求中,探索正在进行的工作。
- 通过存储库历史记录中的提交,调查特定时间点的 bug。
可以暂时使用 Codespace 来测试代码,也可以返回到同一 Codespace 来处理长时间运行的功能工作。
对于每个存储库甚至每个分支,可创建多个 Codespace。 但是,可以创建的及可以同时运行的 Codespace 数量存在限制。 在你达到 Codespace 的最大数目并尝试创建另一个 Codespace 时,一条消息随即显示。 该消息告诉你,在创建新的 Codespace 之前,需要删除/删除现有的 Codespace。
每次在 GitHub Codespaces 中开发时,你都可以创建新的 Codespace,或者为某个功能保留一个长时间运行的 Codespace。 如果启动一个新项目,从一个模板创建一个 Codespace,之后将其发布到 GitHub 上的一个存储库中。
若在每次处理项目时创建新的 Codespace,你应该定期推送你的更改,确保任何新的提交都位于 GitHub 上。 若对新项目使用长时间运行的 Codespace,每次在 Codespace 中开始工作时,从存储库的默认分支拉取,使环境能够获取最新的提交。 该工作流类似于在本地计算机上处理项目。
存储库管理员可以为存储库启用 GitHub Codespaces 预生成,加快 Codespace 创建速度。
有关深入演练和分步指南,请参阅位于本模块末尾“摘要”单元中的题为“学习使用 GitHub Codespaces 编码的初学者指南”和“在 Codespace 中进行开发”的资源。
Codespace 创建过程
创建 GitHub Codespace 时,会发生四个进程:
- 虚拟机和存储将分配到 Codespace。
- 创建一个容器。
- 建立与 Codespace 的连接。
- 执行创建后设置。
在 Codespace 中保存更改
通过 Web 连接到 Codespace 时,自动保存会自动启用,以在经过特定时间后保存更改。 通过在桌面上运行的 Visual Studio Code 连接到 Codespace 时,必须启用自动保存。
你的工作保存到云中的虚拟机上。 可以关闭并停止 Codespace,并在之后返回到保存的工作。 如果你有未保存的更改,你会在退出前收到保存这些更改的提示。 但是,如果 Codespace 被删除,则你的工作将丢失。 若要保存工作,必须提交更改并将其推送到远程存储库,或者将工作发布到新的存储库(如果 Codespace 创建自一个模板)。
打开现有 Codespace
可以在 GitHub.com 上、在 JetBrains IDE、Visual Studio Code 中或使用 GitHub CLI 重新打开任何活动或已停止的 Codespace。
若要恢复现有的 Codespace,可转到该 Codespace 所在的存储库,选择 , 键,然后选择“恢复此 Codespace”。 或者,可在浏览器中打开 https://github.com/codespaces,选择该存储库,然后选择现有的 Codespace。
Codespace 超时
如果 Codespace 处于非活动状态,或者如果你在未显式停止的情况下退出 Codespace,则应用程序在一段时间处于非活动状态后超时并停止运行。 默认超时为处于非活动状态 30 分钟后。 当 Codespace 超时时,将保留上次保存更改时的数据。
使用 GitHub Codespaces 时的 Internet 连接
Codespace 需要 Internet 连接。 如果在 Codespace 中工作时与 Internet 的连接丢失,则无法访问 Codespace。 但是,所有未提交的更改都被保存。 重新建立 Internet 连接时,可以访问与连接丢失时所处的相同状态的 Codespace。
如果你的 Internet 连接不稳定,则应经常提交并推送更改。
关闭或停止 Codespace
如果在未运行停止命令的情况下退出 Codespace,或者让 Codespace 在没有交互的情况下运行,则 Codespace 及其正在运行的进程将在非活动超时期限内继续运行。 默认非活动超时期限为 30 分钟。 可为创建的 Codespace 定义个人超时设置,但组织的超时策略可以推翻该设置。
只有正在运行的 Codespace 才会产生 CPU 费用。 停止的 Codespace 仅产生存储成本。
可以停止并重启 Codespace 以应用更改。 例如,如果更改用于 Codespace 的计算机类型,则需要停止并重启它才能使更改生效。 关闭或停止 Codespace 时,将保留所有未提交的更改,直到你再次连接到 Codespace。
如果遇到错误或意外情况,你还可以停止 Codespace 并选择重启或删除它。
重新生成 Codespace
可以重新生成 Codespace 来实施对开发容器配置的更改。 在大多数情况下,可以创建新的 Codespace 作为重新生成 Codespace 的替代方法。 重新生成 Codespace 时,缓存中的图像可加快重新生成过程。 你还可以执行完全重新生成来清除缓存,并使用全新图像重新生成容器。
在 Codespace 中重新生成容器时,在 /workspaces 目录之外所做的更改将被清除。 在 /workspaces 目录中所做的更改(包括从中创建 Codespace 的存储库或模板的克隆)将在重新生成过程中得到保留。
删除 Codespace
可以为特定任务创建 Codespace。 将更改推送到远程分支后,可以安全地删除该 Codespace。
如果你尝试删除一个包含未推送 git 提交的 Codespace,编辑器会通知你有尚未推送到远程分支的更改。 可以推送任何所需的更改,然后删除你的 Codespace。 还可以继续删除你的 Codespace 和任何未提交的更改,或者将代码导出到新分支,而无需创建新的 Codespace。
在指定时间内保持非活动状态的已停止 Codespace 将自动删除。 非活动 Codespace 在 30 天后删除,但你可以自定义 Codespace 保留时间间隔。