# 为代码库创建代码空间

您可以为仓库中的分支创建代码空间以便在线开发。

## 关于为存储库创建 codespace

可以在 GitHub 上、Visual Studio Code 中或使用 GitHub CLI 创建代码空间。使用本文中的选项卡显示有关创建 codespace 的每种方法的说明。

你可以在个人 GitHub Codespaces 帐户上使用 GitHub，免费版和专业版计划的帐户每月都包含免费使用配额。 通过提供付款详细信息和设置支出限制，可以在超出每月包含的存储空间和计算使用量后继续使用 GitHub Codespaces。 请参阅“[GitHub Codespaces 计费](/zh/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces)”。

组织可以让成员和外部协作者能够创建和使用 codespace，费用由组织承担。 有关详细信息，请参阅“[选择在您的组织中谁拥有和支付 Codespaces 的费用](/zh/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization)”。

能否从组织拥有的存储库创建 codespace 取决于多个因素，包括存储库的可见性以及组织或其父企业的设置。 有关详细信息，请参阅“[代码空间创建和删除的故障排除](/zh/codespaces/troubleshooting/troubleshooting-creation-and-deletion-of-codespaces#no-access-to-create-a-codespace)”。

如果要启动新项目，建议通过模板创建 codespace 并稍后将其发布到 GitHub 上的仓库。有关详细信息，请参阅 [通过模板创建 codespace](/zh/codespaces/developing-in-a-codespace/creating-a-codespace-from-a-template)。

如果从存储库创建 codespace，该 codespace 将与不能为空的特定分支相关联。 您可以为每个仓库或甚至每个分支创建多个代码空间。

可以在“你的 codespace”页面上查看创建的每个可用代码空间。 若要显示此页面，请在 GitHub 的左上角，选择 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-three-bars" aria-label="Open global navigation menu" role="img"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75Zm0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75ZM1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5Z"></path></svg>，然后单击“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-codespaces" aria-label="codespaces" role="img"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg> Codespaces”\*\*\*\*。 这会转到 [github.com/codespaces](https://github.com/codespaces)。

### codespace 创建过程

创建代码空间时，需要执行一些步骤并将你连接到开发环境。

* 第 1 步：虚拟机和存储被分配到您的代码空间。
* 第 2 步：创建容器并克隆仓库。
* 第 3 步：您可以连接到代码空间。
* 第 4 步：Codespace 继续进行创建后的设置。

有关创建 codespace 时发生的情况的详细信息，请参阅 [深入了解 GitHub Codespaces](/zh/codespaces/about-codespaces/deep-dive)。

有关 codespace 生命周期的详细信息，请参阅 [了解代码空间的生命周期](/zh/codespaces/about-codespaces/understanding-the-codespace-lifecycle)。

如果要对 codespace 使用 Git 钩子，则应使用 `devcontainer.json` 生命周期脚本（如 `postCreateCommand`）设置钩子。 这些操作在上面的步骤 4 中执行。 有关生命周期脚本的信息，请参阅开发容器网站上的[开发容器规范](https://containers.dev/implementors/json_reference/#lifecycle-scripts)。 由于在克隆仓库之后创建了 codespace 的 dev 容器，因此在 dev 容器映像中配置的任何 [git 模板目录](https://git-scm.com/docs/git-init#_template_directory)将不适用于你的 codespace。 在创建代码空间后，必须改为安装挂钩。

使用 VS Code 在 codespace 中开发时，你可以编辑代码、调试和使用 Git 命令。 有关详细信息，请参阅 [VS Code 文档](https://code.visualstudio.com/docs)。

若要加快 codespace 的创建速度，存储库管理员可以为存储库启用 GitHub Codespaces 预生成。 有关详细信息，请参阅“[关于 GitHub Codespaces 预构建](/zh/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds)”。

## 为代码库创建代码空间

<div class="ghd-tool webui">

1. 在 GitHub 上，导航到存储库的主页面。

2. 在存储库名称下，选择标有当前分支名称的分支下拉菜单，然后单击要为其创建 codespace 的分支。

   ![屏幕截图显示已展开的分支下拉菜单，其中列出了各个分支。 显示有分支图标的“主干”下拉菜单以橙色边框显示。](/assets/images/help/codespaces/branch-drop-down.png)

3. 单击 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code" aria-label="code" role="img"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg> Code** 按钮，然后单击 **Codespaces** 选项卡。

   对话框底部会显示一条消息，告知谁将为 codespace 付费。

   ![Codespaces 对话框的屏幕截图。 显示谁将为 codespace 付费的消息以深橙色边框突出显示。](/assets/images/help/codespaces/who-will-pay.png)

4. 创建您的 codespace，可以使用默认选项，或者在配置高级选项后再创建。

   * 使用默认选项

     要使用默认选项创建 codespace，请单击 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="Create a codespace on BRANCH" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg>。 <br/><br/>

   * **配置高级选项**

     若要配置 codespace 高级选项（例如其他计算机类型或特定 `devcontainer.json` 文件），请执行以下操作：

     1. 在 “Codespaces” 选项卡的右上角，选择 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="Codespace repository configuration" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>，然后点击“新建并配置选项”。

        ![“Codespaces”选项卡中选项下拉列表的屏幕截图，其中突出显示了选项“使用选项新建”。](/assets/images/help/codespaces/default-machine-type.png)

     2. 在 codespace 选项页上，从下拉菜单中选择首选选项。

        ![高级选项页面的屏幕截图，其中包含“分支”、“开发容器配置”、“区域”和“计算机类型”按钮。](/assets/images/help/codespaces/advanced-options.png)

        选项页面还可能会显示建议在 Codespaces 设置中创建的一个或多个机密的名称。 有关详细信息，请参阅[建议的机密](#recommended-secrets)。

        > \[!NOTE]
        >
        > * 可以为选项页面添加书签，以便快速为该存储库和分支创建一个代码空间（codespace）。
        > *

        ```
         [
        ```

        ```
         https://github.com/codespaces/new
         ](https://github.com/codespaces/new) 页提供了为任何存储库和分支创建 codespace 的快速方法。 可以通过在浏览器的地址栏中输入 `codespace.new` 来快速访问此页面。
        ```

        > * 有关开发容器配置文件的详细信息，请参阅 [开发容器简介](/zh/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)。
        > * 有关计算机类型的详细信息，请参阅 [更改代码空间的计算机类型](/zh/codespaces/customizing-your-codespace/changing-the-machine-type-for-your-codespace#about-machine-types)。
        > * 你选择的可用计算机类型可能会受到多种因素的限制。 其中可能包括为组织配置的策略，或者存储库的计算机类型最低规范。 有关详细信息，请参阅 [限制对计算机类型的访问](/zh/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types) 和 [为代码空间计算机设置最低规范](/zh/codespaces/setting-up-your-project-for-codespaces/configuring-dev-containers/setting-a-minimum-specification-for-codespace-machines)。

     3. 点击“Create codespace”。

## 推荐的秘密

创建 codespace 时，用户定义机密的名称可能会显示在高级选项页上。 如果在所选的开发容器配置中指定了建议的机密，则会发生这种情况。 有关详细信息，请参阅“[为存储库指定建议的机密](/zh/codespaces/setting-up-your-project-for-codespaces/configuring-dev-containers/specifying-recommended-secrets-for-a-repository)”。

<img src="/assets/images/help/codespaces/recommended-secrets.png" style="max-height:50rem" alt='Screenshot of the "Create codespace" page with four recommended secrets highlighted with a dark orange outline.' />

当系统提示输入这些开发环境机密的值时，建议输入这些机密的值，因为项目可能需要这些机密的值。 但是，创建代码空间不需要提供值。 如果愿意，可以在 codespace 中设置这些机密。

如果为推荐的密钥输入值，该密钥将在新的 codespace 中可用。 单击“创建 codespace”时，该机密也会添加到 Codespaces 的个人设置中，因此以后在为此存储库创建 codespace 时，无需为该机密输入值。

如果显示机密名称时带有一个无法选择的复选框，并且没有输入框，这是因为你已在 Codespaces 的个人设置中配置了此名称的机密，并且已将其与此存储库相关联。 如果已创建此名称的机密，但尚未将其与此存储库关联，则可以选择该复选框，这样就可以更新设置来添加关联。

如果要更改预选机密的值，可以在 [github.com/settings/codespaces](https://github.com/settings/codespaces) 从 Codespaces 的个人设置中执行此操作。 有关详细信息，请参阅“[管理 GitHub Codespaces 的账户专属的机密](/zh/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces)”。

</div>

<div class="ghd-tool vscode">

将 GitHub 上的帐户连接到 GitHub Codespaces 扩展后，可以创建新的 codespace。 有关 GitHub Codespaces 扩展的详细信息，请参阅 [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces)。

1. 在 VS Code 的活动栏中，单击“远程资源管理器”图标。

   ![活动栏的屏幕截图。 “远程资源管理器”边栏图标（一个被圆圈覆盖的矩形）以橙色边框突出显示。](/assets/images/help/codespaces/click-remote-explorer-icon-vscode.png)

   > \[!NOTE]
   > 如果远程资源管理器未显示在活动栏中：
   >
   > 1. 访问命令面板。 例如，通过按 <kbd>Shift</kbd>+<kbd>Command</kbd>+<kbd>P</kbd> (Mac)/<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> (Windows/Linux)。
   > 2. 键入：`details`。
   > 3. 单击“Codespace: 详细信息”。

2. 将鼠标悬停在“远程资源管理器”边栏上，然后单击 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="The plus icon" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg>。

   ![GitHub Codespaces 的“远程资源管理器”边栏的屏幕截图。 工具提示“创建新 Codespace”显示在加号按钮旁边。](/assets/images/help/codespaces/create-codespace-vscode.png)

3. 在文本框中，键入要在其中开发的存储库的名称，然后将其选中。

   ![文本框中输入的“octo-org/he”的屏幕截图，以及以此字符串开头的四个存储库的列表。](/assets/images/help/codespaces/choose-repository-vscode.png)

   后续提示的右侧会显示一条消息，告知谁将为 codespace 付费。

   ![分支提示的屏幕截图，其中显示消息“hubwriter 付费使用”。](/assets/images/help/codespaces/who-will-pay-vscode.png)

4. 单击要在其中开发的分支。

5. 如果系统提示选择开发容器配置文件，请从列表中选择一个文件。

6. 选择你要使用的机器类型。

   > \[!NOTE]
   > 你选择的可用计算机类型可能会受到多种因素的限制。 其中可能包括为组织配置的策略，或者存储库的计算机类型最低规范。 有关详细信息，请参阅 [限制对计算机类型的访问](/zh/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types) 和 [为代码空间计算机设置最低规范](/zh/codespaces/setting-up-your-project-for-codespaces/configuring-dev-containers/setting-a-minimum-specification-for-codespace-machines)。

</div>

<div class="ghd-tool cli">

> \[!NOTE]
> 若要详细了解 GitHub CLI，请参阅“[关于 GitHub CLI](/zh/github-cli/github-cli/about-github-cli)”。

若要创建新的 codespace，请使用 `gh codespace create` 子命令。

```shell
gh codespace create
```

系统会提示你选择存储库。 会显示一条消息，告知谁将为 codespace 付费。 系统将提示你选择分支、开发容器配置文件（如果有多个可用）和计算机类型（如果有多个可用）。

或者，您可以使用标志来指定部分或全部选项：

```shell
gh codespace create -r OWNER/REPO -b BRANCH --devcontainer-path PATH -m MACHINE-TYPE
```

在此示例中，将 `owner/repo` 替换为存储库标识符。 将 `branch` 替换为你希望最初在 codespace 中签出的分支的名称或提交的完整 SHA 哈希。 如果使用 `-r` 标志而不使用 `b` 标志，则从默认分支创建 codespace。

将 `path` 替换为要用于新的 codespace 的开发容器配置文件的路径。 如果省略此标志，并且有多个开发容器文件可用，系统将提示你从列表中选择一个文件。 有关开发容器配置文件的详细信息，请参阅 [开发容器简介](/zh/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)。

将 `machine-type` 替换为可用计算机类型的有效标识符。 标识符是字符串，例如：`basicLinux32gb` 和 `standardLinux32gb`。 可用的计算机类型取决于存储库、个人帐户以及你的位置。 如果输入无效或不可用的计算机类型，则错误消息中将显示可用类型。 如果省略此标志，并且有多个计算机类型可用，系统将提示您从列表中选择一个计算机类型。

有关此命令的选项的完整详细信息，请参阅 [GitHub CLI 手册](https://cli.github.com/manual/gh_codespace_create)。

</div>

## 其他阅读材料

* [打开现有 codespace](/zh/codespaces/developing-in-a-codespace/opening-an-existing-codespace)
* [帮助快速创建和继续使用 Codespaces](/zh/codespaces/setting-up-your-project-for-codespaces/setting-up-your-repository/facilitating-quick-creation-and-resumption-of-codespaces)
* [适用于 Codespaces 组织的 REST API 终结点](/zh/rest/codespaces/organizations)