Skip to main content

将 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 的一系列命令的示例,您可以:

  • 列出当前 codespace,检查是否有特定存储库的 codespace:
    gh codespace list
  • 为所需的存储库分支创建新的 codespace:
    gh codespace create -r github/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

GitHub Codespaces 的 gh 命令

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

有关 GitHub Codespaces 的 gh 命令的完整参考,包括每个命令的所有可用选项的详细信息,请参阅 GitHub 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 的创建日期和时间
  • 保留期

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

停止代码空间

gh codespace stop -c CODESPACE-NAME

有关详细信息,请参阅“深入了解 GitHub 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 文件和默认容器映像的详细信息,请参阅“开发容器简介”。

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

在 Visual Studio Code

中打开代码空间

gh codespace code -c CODESPACE-NAME

必须在本地计算机上安装 VS Code。 有关详细信息,请参阅“在 Visual Studio Code 中使用 GitHub 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 功能自述文件

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

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 命令的详细信息,包括可以使用的其他标志,请参阅 GitHub 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

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

访问远程资源

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

注意:GitHub CLI 扩展目前为 beta 版本,可能会有变动。

更改 codespace 的计算机类型

gh codespace edit -m MACHINE-TYPE-NAME

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