# Usando GitHub Codespaces com o GitHub CLI

Você pode trabalhar com GitHub Codespaces diretamente na linha de comando usando gh, a interface de linha de comando do GitHub.

## Sobre a GitHub CLI

A GitHub CLI é uma ferramenta de código aberto para uso do GitHub na linha de comando do computador. Quando você está trabalhando na linha de comando, você pode usar GitHub CLI para economizar tempo e evitar mudar o contexto. Para saber mais, confira [Sobre GitHub CLI](/pt/github-cli/github-cli/about-github-cli).

É possível trabalhar com o GitHub Codespaces na GitHub CLI para fazer o seguinte:

* [Listar todos os seus codespaces](#list-all-of-your-codespaces)
* [Criar um novo codespace](#create-a-new-codespace)
* [Exibir detalhes de um codespace](#view-details-of-a-codespace)
* [Parar um codespace](#stop-a-codespace)
* [Excluir um codespace](#delete-a-codespace)
* [Renomear um codespace](#rename-a-codespace)
* [Reconstruir um codespace](#rebuild-a-codespace)
* [Usar o SSH em um codespace](#ssh-into-a-codespace)
* [Abrir um espaço de código no Visual Studio Code](#open-a-codespace-in-visual-studio-code)
* [Abrir um codespace no JupyterLab](#open-a-codespace-in-jupyterlab)
* [Copiar um arquivo de/para um codespace](#copy-a-file-tofrom-a-codespace)
* [Modificar as portas em um codespace](#modify-ports-in-a-codespace)
* [Acessar os logs do codespace](#access-codespace-logs)
* [Acessar recursos remotos](#access-remote-resources)
* [Alterar o tipo de computador de um codespace](#change-the-machine-type-of-a-codespace)

## Como instalar a GitHub CLI

Para obter instruções de instalação para GitHub CLI, veja o [repositório GitHub CLI](https://github.com/cli/cli#installation).

## Como usar a GitHub CLI

Se você ainda não fez isso, execute `gh auth login` para se autenticar com sua conta do GitHub.

Para usar `gh` a fim de trabalhar com o GitHub Codespaces, digite `gh codespace SUBCOMMAND` ou o alias `gh cs SUBCOMMAND` dele.

Como exemplo de uma série de comandos que você pode usar para trabalhar com GitHub Codespaces, você pode:

* Liste seus codespaces atuais para verificar se você tem um codespace para um repositório específico:<br>
  `gh codespace list`
* Crie um codespace para o branch do repositório necessário:<br>
  `gh codespace create -r github/docs -b main`
* Use o SSH no novo codespace:<br>
  `gh codespace ssh -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`
* Encaminhe uma porta para o computador local:<br>
  `gh codespace ports forward 8000:8000 -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`

##

```
          `gh` Comandos para GitHub Codespaces
```

As seções abaixo fornecem exemplos de comandos para cada uma das operações disponíveis.

Para ver uma referência completa de comandos `gh` do GitHub Codespaces, incluindo detalhes de todas as opções disponíveis para cada comando, confira a ajuda online da GitHub CLI para [gh codespace](https://cli.github.com/manual/gh_codespace). Como alternativa, na linha de comando, use `gh codespace --help` para ajuda geral ou `gh codespace SUBCOMMAND --help` para ajuda com um subcomando específico.

> \[!NOTE]
> O sinalizador `-c CODESPACE_NAME`, usado com muitos comandos, é opcional. Se você omitir, será exibida uma lista de codespaces para você escolher.

### Listar todos os seus codespaces

```shell
gh codespace list
```

A lista inclui o nome exclusivo de cada codespace, que você pode usar em outros comandos `gh codespace`.

Um asterisco no final do nome do branch de um codespace indica que há nele alterações não confirmadas ou não enviadas por push.

### Criar um novo codespace

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

Para saber mais, confira [Como criar um codespace para um repositório](/pt/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository).

### Exibir detalhes de um codespace

```shell
gh codespace view
```

Depois de executar esse comando, você será solicitado a escolher um de seus codespaces existentes. As informações a seguir são exibidas:

* Nome do codespace.
* Estado (por exemplo, "Disponível" ou "Desligado")
* Repositório
* Status do Git
* Caminho para o arquivo de configuração de contêiner de desenvolvimento usado para criar o codespace
* Tipo de computador
* Tempo limite de inatividade
* Data e hora em que o codespace foi criado.
* Período de retenção

Para obter mais informações, confira a [referência da CLI do GitHub](https://cli.github.com/manual/gh_codespace_view).

### Parar um codespace

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

Para saber mais, confira [Aprofundamento de GitHub Codespaces](/pt/codespaces/about-codespaces/deep-dive#closing-or-stopping-your-codespace).

### Excluir um codespace

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

Para saber mais, confira [Excluir um codespace](/pt/codespaces/developing-in-a-codespace/deleting-a-codespace).

### Renomear um codespace

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

Para saber mais, confira [Como renomear um codespace](/pt/codespaces/customizing-your-codespace/renaming-a-codespace?tool=cli).

### Recompilar um codespace

```shell
gh codespace rebuild
```

Para executar uma recompilação completa, adicione `--full` no final deste comando. Para saber mais, confira [Como reconstruir o contêiner em um codespace](/pt/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace).

Quando você usa esse comando para recompilar um codespace, ele usa o arquivo `devcontainer.json` que está atualmente salvo no sistema do codespace. Isso acontece independentemente de o estado atual do arquivo ter sido salvo ou não no controle do código-fonte. Para saber mais, confira [Introdução aos contêineres de desenvolvimento](/pt/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers).

### Usar o SSH em um codespace

Para executar comandos no ambiente remoto do codespace, usando seu terminal, você pode conectar-se via SSH ao codespace.

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

> \[!NOTE]
> O codespace ao qual você se conecta precisa estar executando um servidor SSH. A imagem de contêiner de desenvolvimento padrão inclui um servidor SSH, que é iniciado automaticamente. Se os codespaces não forem criados com base na imagem padrão, você poderá instalar e iniciar um servidor SSH adicionando o seguinte ao objeto `features` no arquivo `devcontainer.json`.
>
> ```jsonc
> "features": {
> // ...
> "ghcr.io/devcontainers/features/sshd:1": {
> "version": "latest"
> },
> // ...
> }
> ```
>
> Para obter mais informações sobre o arquivo `devcontainer.json` e a imagem de contêiner padrão, confira [Introdução aos contêineres de desenvolvimento](/pt/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers).

O GitHub Codespaces cria uma chave SSH local automaticamente para oferecer uma experiência de autenticação perfeita. Para obter mais informações de como se conectar ao SSH, confira [`gh codespace ssh`](https://cli.github.com/manual/gh_codespace_ssh).

### Abrir um codespace no Visual Studio Code

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

É necessário ter o VS Code instalado no computador local. Para saber mais, confira [Usando GitHub Codespaces no Visual Studio Code](/pt/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code).

### Abrir um codespace no JupyterLab

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

O aplicativo JupyterLab deve ser instalado no codespace que você está abrindo. A imagem de contêiner de desenvolvimento padrão inclui o JupyterLab, portanto, os codespaces criados com base na imagem padrão sempre terão o JupyterLab instalado. Para obter mais informações sobre a imagem padrão, confira [Introdução aos contêineres de desenvolvimento](/pt/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration) e o repositório [`devcontainers/images`](https://github.com/devcontainers/images/tree/main/src/universal). Se você não estiver usando a imagem padrão na configuração do contêiner de desenvolvimento, instale o JupyterLab adicionando o recurso `ghcr.io/devcontainers/features/python` ao arquivo `devcontainer.json`. Você deve incluir a opção `"installJupyterlab": true`. Para obter mais informações, confira o README do recurso [`python`](https://github.com/devcontainers/features/tree/main/src/python#python-python), no repositório `devcontainers/features`.

### Copiar um arquivo de/para um codespace

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

Use o prefixo `remote:` em um nome de arquivo ou de diretório para indicar que ele está no codespace. Assim como no comando UNIX `cp`, o primeiro argumento especifica a origem e o último especifica o destino. Se o destino for um diretório, você poderá especificar várias fontes. Use o sinalizador `-r` (recursivo) se uma das fontes for um diretório.

O local dos arquivos e diretórios no codespace é relativo ao diretório principal do usuário remoto.

#### Exemplos

* Copie um arquivo do computador local para o diretório `$HOME` de um codespace:

  `gh codespace cp myfile.txt remote:`

* Copiar um arquivo para o diretório no qual se faz o check-out de um repositório em um codespace:

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

* Copiar um arquivo de um codespace para o diretório atual na máquina local.

  `gh codespace cp remote:myfile.txt .`

* Copie três arquivos locais para o diretório `$HOME/temp` de um codespace:

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

* Copie três arquivos de um codespace para o diretório de trabalho atual na máquina local:

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

* Copie um diretório local para o diretório `$HOME` de um codespace:

  `gh codespace cp -r mydir remote:`

* Copiar o diretório de um codespace para a máquina local, alterando o nome do diretório:

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

Para obter mais informações sobre o comando `gh codespace cp`, incluindo sinalizadores adicionais que você pode usar, confira [o manual da GitHub CLI](https://cli.github.com/manual/gh_codespace_cp).

### Modificar portas em um codespace

Você pode encaminhar uma porta em um codespace para uma porta local. A porta será encaminhada enquanto o processo estiver em execução. Para interromper o encaminhamento da porta, pressione <kbd>Control</kbd>+<kbd>C</kbd>.

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

Para ver os detalhes das portas encaminhadas, digite `gh codespace ports` e depois escolha um codespace.

Você pode definir a visibilidade de uma porta encaminhada. Há três configurações de visibilidade:

* `private` – Visível somente para você. Essa é a configuração padrão quando você encaminha uma porta.
* `org` – Visível para os membros da organização que é o proprietário do repositório.
* `public` – Visível para qualquer pessoa que conheça a URL e o número da porta.

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

Você pode definir a visibilidade de várias portas com um comando. Por exemplo:

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

Para saber mais, confira [Encaminhar portas no seu código](/pt/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace).

### Acessar registros de codespaces

Você pode ver o registro de criação de um codespace. Depois de entrar neste comando será solicitado que você digite a senha da sua chave SSH.

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

Para saber mais sobre o log de criação, confira [Logs do GitHub Codespaces](/pt/codespaces/troubleshooting/github-codespaces-logs#creation-logs).

### Acessar recursos remotos

Você pode usar a extensão GitHub CLI para criar uma ponte entre um codespace e seu computador local, e o codespace possa acessar qualquer recurso remoto que esteja acessível em seu computador. Para obter mais informações sobre como usar a extensão, confira [Como usar dados GitHub CLI para acessar recursos remotos](https://github.com/github/gh-net#codespaces-network-bridge).

> \[!NOTE]
> A extensão do GitHub CLI está atualmente em versão prévia pública e sujeita a alterações.

### Alterar o tipo de computador de um codespace

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

Para saber mais, confira a guia "GitHub CLI" de [Alterando o tipo de máquina para seu codespace](/pt/codespaces/customizing-your-codespace/changing-the-machine-type-for-your-codespace).