Skip to main content

将 Codespaces 与 CLI 配合使用

可以使用 命令行界面 gh 直接从命令行处理 Codespaces。

关于 CLI

CLI 是用于从计算机的命令行使用 的开源工具。 从命令行操作时,您可以使用 CLI 来节省时间并避免切换上下文。有关详细信息,请参阅 关于 CLI

可以在 CLI 中使用 Codespaces 执行以下操作:

安装 CLI

有关 CLI 的安装说明,请参阅 CLI 存储库

使用 CLI

如果尚未执行此操作,请运行 gh auth login 对 帐户进行身份验证。

若要使用 gh 处理 Codespaces,请键入 gh codespace SUBCOMMAND 或其别名 gh cs SUBCOMMAND

作为可用于处理 Codespaces 的一系列命令的示例,您可以:

  • 列出当前 codespace,检查是否有特定存储库的 codespace:
    gh codespace list
  • 为所需的存储库分支创建新的 codespace:
    gh codespace create -r /docs -b main
  • 通过 SSH 连接到新的 codespace:
    gh codespace ssh -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq
  • 将端口转发到本地计算机:
    gh codespace ports forward 8000:8000 -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq

Codespaces 的 gh 命令

以下各节给出了每个可用操作的示例命令。

有关 Codespaces 的 gh 命令的完整参考,包括每个命令的所有可用选项的详细信息,请参阅 CLI 联机帮助以了解 gh codespace。 或者,在命令行上,使用 gh codespace --help 获取常规帮助,或者使用 gh codespace SUBCOMMAND --help 获取特定子命令的帮助。

注意

与许多命令一起使用的 -c CODESPACE_NAME 标志是可选的。 如果省略它,则会显示一个代码空间列表供您选择。

列出所有代码空间

gh codespace list

该列表包含每个 codespace 的唯一名称,可在其他 gh codespace 命令中使用。

codespace 分支名称末尾的星号表示该 codespace 中存在未提交或未推送的更改。

创建新的代码空间

gh codespace create -r OWNER/REPO_NAME [-b BRANCH]

有关详细信息,请参阅“为存储库创建 codespace”。

查看 codespace 的详细信息

gh codespace view

运行此命令后,系统会提示选择现有 codespace 之一。 然后显示以下信息:

  • codespace 的名称
  • 状态(例如“可用”或“关闭”)
  • 存储库
  • Git 状态
  • 用于创建 codespace 的开发容器配置文件的路径
  • 计算机类型
  • 空闲超时
  • codespace 的创建日期和时间
  • 保留期

有关详细信息,请参阅 CLI 引用

停止代码空间

gh codespace stop -c CODESPACE-NAME

有关详细信息,请参阅“深入了解 Codespaces”。

删除代码空间

gh codespace delete -c CODESPACE-NAME

有关详细信息,请参阅“删除代码空间”。

重命名 codespace

gh codespace edit -c CODESPACE-NAME -d 'DISPLAY-NAME'

有关详细信息,请参阅“重命名 codespace”。

重新生成 codespace

gh codespace rebuild

若要执行完全重新生成,请在此命令的末尾添加 --full。 有关详细信息,请参阅“在 codespace 中重新生成容器”。

使用此命令重新生成 codespace 时,它将使用当前保存在 codespace 系统中的 devcontainer.json 文件。 无论文件的当前状态是否已保存在源代码管理中,都会发生这种情况。 有关详细信息,请参阅“开发容器简介”。

SSH 到代码空间

要在远程代码空间计算机上运行命令,请从终端通过 SSH 进入代码空间。

gh codespace ssh -c CODESPACE-NAME

注意

连接到的 codespace 必须运行 SSH 服务器。 默认开发容器映像包含一个可自动启动的 SSH 服务器。 如果未通过默认映像创建 codespace,可以通过将以下内容添加到 devcontainer.json 文件中的 features 对象来安装和启动 SSH 服务器。

"features": {
// ...
"ghcr.io/devcontainers/features/sshd:1": {
"version": "latest"
},
// ...
}

有关 devcontainer.json 文件和默认容器映像的详细信息,请参阅 开发容器简介

Codespaces 会自动创建本地 SSH 密钥,以提供无缝身份验证体验。 若要详细了解如何使用 SSH 进行连接,请参阅 gh codespace ssh

在 Visual Studio Code

中打开代码空间

gh codespace code -c CODESPACE-NAME

必须在本地计算机上安装 VS Code。 有关详细信息,请参阅“在 Visual Studio Code 中使用 Codespaces”。

在 JupyterLab 中打开 codespace

gh codespace jupyter -c CODESPACE-NAME

JupyterLab 应用程序必须安装在要打开的 Codespace 中。 默认开发容器映像包括 JupyterLab,因此从默认映像创建的 codespaces 将始终安装 JupyterLab。 有关默认映像的详细信息,请参阅“开发容器简介”以及 devcontainers/images 仓库。 如果未在开发容器配置中使用默认映像,则可以通过将 ghcr.io/devcontainers/features/python 功能添加到 devcontainer.json 文件来安装 JupyterLab。 应该包括选项 "installJupyterlab": true。 有关详细信息,请参阅 devcontainers/features 存储库中 python 功能的 README 文件。

将文件复制到代码空间/从代码空间复制文件

gh codespace cp [-r] SOURCE(S) DESTINATION

使用文件或目录名称上的前缀 remote: 来指示它位于 codespace 上。 与 UNIX cp 命令一样,第一个参数指定源,最后一个参数指定目标。 如果目标是目录,则可以指定多个来源。 如果任何源是目录,请使用 -r(递归)标志。

代码空间上文件和目录的位置相对于远程用户的主目录。

示例

  • 将文件从本地计算机复制到 codespace 的 $HOME 目录:

    gh codespace cp myfile.txt remote:

  • 将文件复制到代码空间中检出存储库的目录:

    gh codespace cp myfile.txt remote:/workspaces/REPOSITORY-NAME

  • 将文件从代码空间复制到本地计算机上的当前目录:

    gh codespace cp remote:myfile.txt .

  • 将三个本地文件复制到 codespace 的 $HOME/temp 目录:

    gh codespace cp a1.txt a2.txt a3.txt remote:temp

  • 将三个文件从代码空间复制到本地计算机上的当前工作目录:

    gh codespace cp remote:a1.txt remote:a2.txt remote:a3.txt .

  • 将本地目录复制到 codespace 的 $HOME 目录:

    gh codespace cp -r mydir remote:

  • 将目录从代码空间复制到本地计算机,更改目录名称:

    gh codespace cp -r remote:mydir mydir-localcopy

有关 gh codespace cp 命令的详细信息,包括可以使用的其他标志,请参阅 CLI 手册

修改代码空间中的端口

您可以将代码空间上的端口转发到本地端口。 只要进程正在运行,端口就会保持转发状态。 若要停止转发端口,请按 Control+C

gh codespace ports forward CODESPACE-PORT_NAME:LOCAL-PORT-NAME -c CODESPACE-NAME

若要查看转发端口的详细信息,请输入 gh codespace ports 并选择一个 codespace。

您可以设置转发端口的可见性。 有三种可见性设置:

  • private - 仅对你可见。 这是转发端口时的默认设置。
  • org - 对拥有存储库的组织成员可见。
  • public - 对知道 URL 和端口号的任何人可见。
gh codespace ports visibility CODESPACE-PORT:private|org|public -c CODESPACE-NAME

您可以使用一个命令设置多个端口的可见性。 例如:

gh codespace ports visibility 80:private 3000:public 3306:org -c CODESPACE-NAME

有关详细信息,请参阅“代码空间中的转发端口”。

访问代码空间日志

您可以查看代码空间的创建日志。 输入此命令后,系统将要求您输入 SSH 密钥的密码。

gh codespace logs -c CODESPACE-NAME

有关创建日志的详细信息,请参阅 Codespaces 日志

访问远程资源

可以使用 CLI 扩展在 codespace 和本地计算机之间创建网桥,以便 codespace 可以访问可从计算机访问的任何远程资源。 有关使用扩展的详细信息,请参阅使用 CLI 访问远程资源

注意

CLI 扩展目前为 公共预览版,可能会更改。

更改 codespace 的计算机类型

gh codespace edit -m MACHINE-TYPE-NAME

有关详细信息,请参阅 更改代码空间的计算机类型 的“ CLI”选项卡。