跳至主要内容

使用 GitHub CLI 操作 GitHub Codespaces

您可以使用 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:

  • 列出您当前的 codespaces,以检查您是否有特定仓库的 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标志用于许多命令,是可选的。如果您省略它,则会显示 codespaces 列表供您选择。

列出您所有的 codespaces

gh codespace list

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

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

创建新的 codespace

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

更多信息,请参阅“为仓库创建 codespace”。

查看 codespace 的详细信息

gh codespace view

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

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

更多信息,请参阅GitHub CLI 参考

停止 codespace

gh codespace stop -c CODESPACE-NAME

更多信息,请参阅“深入了解 GitHub Codespaces”。

删除 codespace

gh codespace delete -c CODESPACE-NAME

更多信息,请参阅“删除 codespace”。

重命名 codespace

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

更多信息,请参阅“重命名 codespace”。

重新构建 codespace

gh codespace rebuild

要执行完全重新构建,请在此命令末尾添加--full。更多信息,请参阅“重新构建 codespace 中的容器”。

当您使用此命令重新构建 codespace 时,它使用当前保存在 codespace 系统中的devcontainer.json文件。无论文件的当前状态是否已保存在源代码控制中,都会发生这种情况。更多信息,请参阅“开发容器简介”。

SSH 连接到 codespace

要在远程 codespace 机器上运行命令,您可以从终端 SSH 连接到 codespace。

gh codespace ssh -c CODESPACE-NAME

注意

您连接到的 codespace 必须运行 SSH 服务器。默认的开发容器映像包含一个 SSH 服务器,该服务器会自动启动。如果您的 codespaces 不是从默认映像创建的,您可以通过将以下内容添加到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 中打开 codespace

gh codespace code -c CODESPACE-NAME

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

在 JupyterLab 中打开 codespace

gh codespace jupyter -c CODESPACE-NAME

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

复制 codespace 中的文件

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

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

codespace 上的文件和目录的位置相对于远程用户的 home 目录。

示例

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

    gh codespace cp myfile.txt remote

  • 将文件复制到 codespace 中签出仓库的目录

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

  • 将文件从 codespace 复制到本地计算机的当前目录

    gh codespace cp remote:myfile.txt .

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

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

  • 将三个文件从 codespace 复制到本地计算机的当前工作目录

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

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

    gh codespace cp -r mydir remote

  • 将目录从 codespace 复制到本地计算机,并更改目录名称

    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”选项卡。