跳至主要内容

将 GitHub Codespaces 与 GitHub CLI 配合使用

你可以使用 GitHub 命令行界面 gh 直接从命令行操作 GitHub Codespaces。

关于 GitHub CLI

GitHub CLI 是一个开源工具,用于从计算机的命令行使用 GitHub。当你从命令行工作时,可以使用 GitHub CLI 节省时间,避免切换上下文。有关详细信息,请参阅“关于 GitHub CLI”。

你可以在 GitHub CLI 中操作 GitHub Codespaces 以

安装 GitHub CLI

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

使用 GitHub CLI

如果您尚未执行此操作,请运行 gh auth login 以使用您的 GitHub 帐户进行身份验证。

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

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

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

用于 GitHub Codespaces 的 gh 命令

以下部分为每项可用操作提供了示例命令。

有关用于 GitHub Codespaces 的 gh 命令的完整参考,包括每个命令的所有可用选项的详细信息,请参阅 "gh codespace" 的 GitHub CLI 在线帮助。或者,在命令行中,使用 gh codespace --help 获取一般帮助,或使用 gh codespace SUBCOMMAND --help 获取特定子命令的帮助。

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

列出您的所有代码空间

gh codespace list

该列表包括每个代码空间的唯一名称,您可以在其他 gh codespace 命令中使用该名称。

代码空间分支名称末尾的星号表示该代码空间中有未提交或未推送的更改。

创建新代码空间

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

有关详细信息,请参阅“为存储库创建代码空间”。

查看代码空间的详细信息

gh codespace view

运行此命令后,系统会提示你选择一个现有的代码空间。然后显示以下信息

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

有关详细信息,请参阅GitHub CLI 参考

停止代码空间

gh codespace stop -c CODESPACE-NAME

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

删除代码空间

gh codespace delete -c CODESPACE-NAME

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

重命名代码空间

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

有关详细信息,请参阅“重命名代码空间”。

重建代码空间

gh codespace rebuild

要执行完全重建,请在此命令末尾添加 --full。有关详细信息,请参阅“在代码空间中重建容器”。

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

通过 SSH 进入代码空间

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

gh codespace ssh -c CODESPACE-NAME

注意:您连接到的代码空间必须运行 SSH 服务器。默认开发容器映像包含一个 SSH 服务器,该服务器会自动启动。如果您的代码空间不是从默认映像创建的,您可以通过将以下内容添加到 devcontainer.json 文件中的 features 对象来安装和启动 SSH 服务器。

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


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

GitHub Codespaces 自动创建一个本地 SSH 密钥,以提供无缝的身份验证体验。有关通过 SSH 连接的详细信息,请参阅 gh codespace ssh

在 Visual Studio Code 中打开代码空间

gh codespace code -c CODESPACE-NAME

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

在 JupyterLab 中打开代码空间

gh codespace jupyter -c CODESPACE-NAME

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

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

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

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

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

示例

  • 将文件从本地计算机复制到代码空间的 $HOME 目录

    gh codespace cp myfile.txt remote

  • 将文件复制到代码空间中签出存储库所在的目录

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

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

    gh codespace cp remote:myfile.txt .

  • 将三个本地文件复制到代码空间的 $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 .

  • 将本地目录复制到代码空间的 $HOME 目录

    gh codespace cp -r mydir remote

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

    gh codespace cp -r remote:mydir mydir-localcopy

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

修改 Codespace 中的端口

你可以将 Codespace 上的端口转发到本地端口。只要进程正在运行,端口就会一直转发。要停止转发端口,请按 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

有关详细信息,请参阅“在 Codespace 中转发端口”。

访问 Codespace 日志

你可以查看 Codespace 的创建日志。输入此命令后,系统会要求你输入 SSH 密钥的密码。

gh codespace logs -c CODESPACE-NAME

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

访问远程资源

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

注意:GitHub CLI 扩展目前处于测试阶段,可能会发生变化。

更改 Codespace 的计算机类型

gh codespace edit -m MACHINE-TYPE-NAME

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