# Использование кодовых пространств GitHub с GitHub CLI

Вы можете работать с GitHub Codespaces непосредственно из командной строки с помощью ghинтерфейса командной строки GitHub .

## Сведения о GitHub CLI

GitHub CLI — это инструмент с открытым исходным кодом для использования GitHub из командной строки компьютера. При работе с командной строкой можно использовать GitHub CLI — это позволит экономить время и не переключать контекст. Дополнительные сведения см. в разделе [О GitHub CLI](/ru/github-cli/github-cli/about-github-cli).

Вы можете работать с GitHub Codespaces в GitHub CLI:

* [Список всех пространств кода](#list-all-of-your-codespaces)
* [Создание нового пространства кода](#create-a-new-codespace)
* [Просмотр сведений о пространстве кода](#view-details-of-a-codespace)
* [Остановка codespace](#stop-a-codespace)
* [Удаление codespace](#delete-a-codespace)
* [Переименование пространства кода](#rename-a-codespace)
* [Перестроение пространства кода](#rebuild-a-codespace)
* [Выполнения SSH в codespace](#ssh-into-a-codespace)
* [Открытие codespace в Visual Studio Code](#open-a-codespace-in-visual-studio-code)
* [Открытие codespace в JupyterLab](#open-a-codespace-in-jupyterlab)
* [Копирование файла в пространство кода и из нее](#copy-a-file-tofrom-a-codespace)
* [Изменение портов в codespace](#modify-ports-in-a-codespace)
* [Доступ к журналам codespace](#access-codespace-logs)
* [Получение доступа к удаленным ресурсам](#access-remote-resources)
* [Изменение типа компьютера пространства кода](#change-the-machine-type-of-a-codespace)

## Установка GitHub CLI

Инструкции по установке для GitHub CLI см. в [репозитории GitHub CLI](https://github.com/cli/cli#installation).

## Использование GitHub CLI

Если вы еще этого не сделали, выполните `gh auth login` для проверки подлинности с помощью учетной записи GitHub.

Для работы `gh` с GitHub Codespaces, введите `gh codespace SUBCOMMAND` или его псевдоним `gh cs SUBCOMMAND`.

В качестве примера ряда команд, которые можно использовать для работы с GitHub Codespaces, вы можете:

* Создать список текущих codespace, чтобы проверить наличие codespace для определенного репозитория:<br>
  `gh codespace list`
* Создать новый codespace для требуемой ветви репозитория:<br>
  `gh codespace create -r github/docs -b main`
* Выполнения SSH в новом codespace:<br>
  `gh codespace ssh -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`
* Переадресуйте порт на локальный компьютер:<br>
  `gh codespace ports forward 8000:8000 -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`

## Команды `gh` для GitHub Codespaces

В следующих разделах приведены примеры команд для каждой из доступных операций.

Полный справочник `gh` по командам для GitHub Codespaces, включая сведения обо всех доступных параметрах для каждой команды, см. в справке GitHub CLI в интернете для [пространства](https://cli.github.com/manual/gh_codespace) кода gh. Кроме того, в командной строке используйте `gh codespace --help` общую справку или `gh codespace SUBCOMMAND --help` справку по определенному подкомандам.

> \[!NOTE]
> Флаг `-c CODESPACE_NAME` , используемый со многими командами, является необязательным. Если он пропущен, отобразится список codespace для выбора.

### Список всех пространств кода

```shell
gh codespace list
```

Список содержит уникальное имя каждого codespace, которое можно использовать в других командах `gh codespace`.

Звездочка в конце имени ветви для пространства кода указывает на то, что в этом пространстве кода есть незафиксированные или незафиксированные изменения.

### Создание нового пространства кода

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

Дополнительные сведения см. в разделе [Создание пространства кода для репозитория](/ru/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository).

### Просмотр сведений о пространстве кода

```shell
gh codespace view
```

После выполнения этой команды вам будет предложено выбрать одно из существующих пространств кода. Затем отображаются следующие сведения:

* Имя пространства кода
* Состояние (например, "Доступно" или "Завершение работы")
* Репозиторий
* Состояние Git
* Путь к файлу конфигурации контейнера разработки, используемому для создания пространства кода
* Тип компьютера
* Время ожидания перед переходом в режим простоя
* Дата и время создания пространства кода
* Период хранения

Дополнительные сведения см. в справочнике[ по интерфейсу командной ](https://cli.github.com/manual/gh_codespace_view)строки GitHub.

### Остановка codespace

```shell
gh codespace stop -c CODESPACE-NAME
```

Дополнительные сведения см. в разделе [Подробные сведения о GitHub Codespaces](/ru/codespaces/about-codespaces/deep-dive#closing-or-stopping-your-codespace).

### Удаление codespace

```shell
gh codespace delete -c CODESPACE-NAME
```

Дополнительные сведения см. в разделе [Удаление codespace](/ru/codespaces/developing-in-a-codespace/deleting-a-codespace).

### Переименование пространства кода

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

Дополнительные сведения см. в разделе [Переименование codespace](/ru/codespaces/customizing-your-codespace/renaming-a-codespace?tool=cli).

### Перестроение пространства кода

```shell
gh codespace rebuild
```

Чтобы выполнить полную перестроение, добавьте `--full` в конце этой команды. Дополнительные сведения см. в разделе [Перестроение контейнера в пространстве кода](/ru/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace).

При использовании этой команды для перестроения пространства кода используется `devcontainer.json` файл, который в настоящее время сохраняется в системе пространства кода. Это происходит независимо от того, сохранено ли текущее состояние файла в системе управления версиями. Дополнительные сведения см. в разделе [Основные сведения о контейнерах разработки](/ru/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers).

### Выполнения SSH в codespace

Чтобы выполнить команды на удаленном компьютере с codespace, вы можете выполнить SSH в codespace в терминале.

```shell
gh codespace ssh -c CODESPACE-NAME
```

> \[!NOTE]
> Пространство кода, к которому вы подключаетесь, должно работать на сервере SSH. Образ контейнера разработки по умолчанию включает сервер SSH, который запускается автоматически. Если пространства кода не создаются на основе образа по умолчанию, можно установить и запустить сервер SSH, добавив следующий `features` объект в `devcontainer.json` файл.
>
> ```jsonc
> "features": {
> // ...
> "ghcr.io/devcontainers/features/sshd:1": {
> "version": "latest"
> },
> // ...
> }
> ```
>
> Дополнительные сведения о `devcontainer.json` файле и образе контейнера по умолчанию см. в разделе [Основные сведения о контейнерах разработки](/ru/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers).

GitHub Codespaces автоматически создает локальный ключ SSH для обеспечения простой проверки подлинности. Дополнительные сведения о подключении с помощью SSH см. в статье [`gh codespace ssh`](https://cli.github.com/manual/gh_codespace_ssh).

### Открытие codespace в Visual Studio Code

```shell
gh codespace code -c CODESPACE-NAME
```

На локальном компьютере должен быть установлен VS Code. Дополнительные сведения см. в разделе [Использование кодовых пространств GitHub в Visual Studio Code](/ru/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code).

### Открытие codespace в JupyterLab

```shell
gh codespace jupyter -c CODESPACE-NAME
```

Приложение JupyterLab должно быть установлено в открываемом пространстве кода. Образ контейнера разработки по умолчанию включает JupyterLab, поэтому пространства кода, созданные на основе образа по умолчанию, всегда будут установлены JupyterLab. Дополнительные сведения о образе по умолчанию см. в разделе AUTOTITLE и репозитория[](https://github.com/devcontainers/images/tree/main/src/universal)`devcontainers/images`.[ ](/ru/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration) Если вы не используете образ по умолчанию в конфигурации контейнера разработки, можно установить JupyterLab, добавив `ghcr.io/devcontainers/features/python` эту функцию в `devcontainer.json` файл. Этот параметр `"installJupyterlab": true`следует включить. Дополнительные сведения см. в разделе README для [`python`](https://github.com/devcontainers/features/tree/main/src/python#python-python) функции в репозитории.`devcontainers/features`

### Копирование файла в пространство кода и из нее

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

Используйте префикс `remote:` в имени файла или каталога, чтобы указать, что он находится в codespace. Как и в случае с командой `cp` UNIX, первый аргумент указывает источник, а последний — назначение. Если назначение является каталогом, можно указать несколько источников. Используйте флаг (рекурсивный) `-r`, если какой-либо из источников является каталогом.

Расположение файлов и каталогов в codespace относится к домашнему каталогу удаленного пользователя.

#### Примеры

* Скопируйте файл с локального компьютера в каталог `$HOME` codespace:

  `gh codespace cp myfile.txt remote:`

* Скопируйте файл в каталог, в котором репозиторий получен для изменения в codespace:

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

* Скопируйте файл из codespace в текущий каталог на локальном компьютере:

  `gh codespace cp remote:myfile.txt .`

* Скопируйте три локальных файла в каталог `$HOME/temp` codespace:

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

* Скопируйте три файла из codespace в текущую рабочую папку на локальном компьютере:

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

* Скопируйте локальный каталог в каталог `$HOME` codespace:

  `gh codespace cp -r mydir remote:`

* Скопируйте каталог из codespace на локальный компьютер, изменив имя каталога:

  `gh codespace cp -r remote:mydir mydir-localcopy`

Дополнительные сведения о команде `gh codespace cp`, включая дополнительные флаги, которые можно использовать, см. в [руководстве по GitHub CLI](https://cli.github.com/manual/gh_codespace_cp).

### Изменение портов в codespace

Вы можете переадресовать порт в codespace на локальный порт. Порт остается переадресованным, пока выполняется процесс. Чтобы остановить переадресацию порта, нажмите клавиши <kbd>Control</kbd>+<kbd>C</kbd>.

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

Чтобы просмотреть сведения о переадресованных портах, введите `gh codespace ports` и выберите кодовое пространство.

Вы можете задать видимость переадресованного порта. Существует три варианта видимости.

* `private` — объект виден только вам. Это вариант по умолчанию при переадресации порта.
* `org` — объект виден членам организации, которой принадлежит репозиторий.
* `public` — объект виден всем, кто знает URL-адрес и номер порта.

```shell
gh codespace ports visibility CODESPACE-PORT:private|org|public -c CODESPACE-NAME
```

Задать видимость для нескольких портов можно с помощью одной команды. Например:

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

Дополнительные сведения см. в разделе [Переадресация портов в вашем codespace](/ru/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace).

### Доступ к журналам codespace

Вы можете просматривать журнал создания для codespace. После ввода этой команды появится запрос на ввод парольной фразы для ключа SSH.

```shell
gh codespace logs -c CODESPACE-NAME
```

Дополнительные сведения о журнале создания см. в разделе [Логи кодовых пространств GitHub](/ru/codespaces/troubleshooting/github-codespaces-logs#creation-logs).

### Получение доступа к удаленным ресурсам

Вы можете использовать расширение GitHub CLI, чтобы создать мост между codespace и вашим локальным компьютером, чтобы разрешить codespace обращаться к любому удаленному ресурсу, доступному с вашего компьютера. Дополнительные сведения об использовании расширения см. в статье ["Использование GitHub CLI для доступа к удаленным ресурсам](https://github.com/github/gh-net#codespaces-network-bridge).

> \[!NOTE]
> Расширение GitHub CLI в настоящее время находится в public preview и подлежит изменению.

### Изменение типа компьютера пространства кода

```shell
gh codespace edit -m MACHINE-TYPE-NAME
```

Дополнительные сведения см. на вкладке ["GitHub CLI" autoTITLE](/ru/codespaces/customizing-your-codespace/changing-the-machine-type-for-your-codespace).