# Utilisation de GitHub Codespaces avec GitHub CLI

Vous pouvez utiliser GitHub Codespaces directement à partir de votre ligne de commande à l’aide de gh, l’interface de ligne de commande GitHub.

## À propos de GitHub CLI

GitHub CLI est un outil open source permettant d’utiliser GitHub à partir de la ligne de commande de votre ordinateur. Lorsque vous travaillez à partir de la ligne de commande, vous pouvez utiliser l’GitHub CLI pour gagner du temps et éviter de changer de contexte. Pour plus d’informations, consultez [À propos de l’interface CLI GitHub](/fr/github-cli/github-cli/about-github-cli).

Vous pouvez utiliser GitHub Codespaces dans GitHub CLI pour :

* [Répertorier tous vos codespaces](#list-all-of-your-codespaces)
* [Créer un codespace](#create-a-new-codespace)
* [Afficher les détails d’un codespace](#view-details-of-a-codespace)
* [Arrêter un codespace](#stop-a-codespace)
* [Supprimer un codespace](#delete-a-codespace)
* [Renommer un codespace](#rename-a-codespace)
* [Recréer un codespace](#rebuild-a-codespace)
* [Établir une connexion SSH à un codespace](#ssh-into-a-codespace)
* [Ouvrir un codespace dans Visual Studio Code](#open-a-codespace-in-visual-studio-code)
* [Ouvrir un espace de code dans JupyterLab](#open-a-codespace-in-jupyterlab)
* [Copier un fichier vers/depuis un codespace](#copy-a-file-tofrom-a-codespace)
* [Modifier des ports dans un codespace](#modify-ports-in-a-codespace)
* [Accéder aux journaux de codespace](#access-codespace-logs)
* [Accéder aux ressources distantes](#access-remote-resources)
* [Modifier le type de machine d’un codespace](#change-the-machine-type-of-a-codespace)

## Installation de GitHub CLI

Pour obtenir des instructions d’installation pour GitHub CLI, consultez le [dépôt GitHub CLI](https://github.com/cli/cli#installation).

## Utilisation de GitHub CLI

Si vous ne l’avez déjà fait, exécutez `gh auth login` pour vous authentifier auprès de votre compte GitHub.

Pour utiliser `gh` pour travailler avec GitHub Codespaces, tapez `gh codespace SUBCOMMAND` ou son alias `gh cs SUBCOMMAND`.

En guise d’exemple de série de commandes que vous pourriez pour travailler avec GitHub Codespaces, vous pouvez :

* Répertorier vos codespaces actuels pour vérifier si vous disposez d’un codespace pour un dépôt particulier :<br>
  `gh codespace list`
* Créer un codespace pour la branche de dépôt requise :<br>
  `gh codespace create -r github/docs -b main`
* Établir une connexion SSH au nouveau codespace :<br>
  `gh codespace ssh -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`
* Transférer un port vers votre ordinateur local :<br>
  `gh codespace ports forward 8000:8000 -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`

## Commandes `gh` pour GitHub Codespaces

Les sections ci-dessous donnent des exemples de commandes pour chacune des opérations disponibles.

Pour obtenir une référence complète des commandes `gh` pour GitHub Codespaces, incluant des détails sur toutes les options disponibles pour chaque commande, consultez l’aide en ligne de GitHub CLI pour [gh codespace](https://cli.github.com/manual/gh_codespace). Sur la ligne de commande, vous pouvez également utiliser `gh codespace --help` pour obtenir une aide générale ou `gh codespace SUBCOMMAND --help` pour obtenir une aide sur une sous-commande spécifique.

> \[!NOTE]
> L’indicateur `-c CODESPACE_NAME` utilisé avec de nombreuses commandes est facultatif. Si vous l’omettez, une liste de codespaces s’affiche, dans laquelle vous pouvez opérer un choix.

### Répertorier tous vos codespaces

```shell
gh codespace list
```

La liste inclut le nom unique de chaque espace de codespace, que vous pouvez utiliser dans d’autres commandes `gh codespace`.

Un astérisque à la fin du nom d’une branche d’un codespace indique qu’il existe des modifications non validées ou non envoyées dans ce codespace.

### Créer un codespace

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

Pour plus d’informations, consultez « [Création d’un codespace pour un dépôt](/fr/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository) ».

### Afficher les détails d’un codespace

```shell
gh codespace view
```

Après avoir exécuté cette commande, vous êtes invité à choisir l’un de vos codespaces existants. Les informations suivantes sont alors affichées :

* Nom du codespace
* État (par exemple, « Disponible » ou « Arrêt »)
* Référentiel
* État de Git
* Chemin d’accès au fichier de configuration du conteneur de développement utilisé pour créer le codespace
* Type de machine
* Délai d’inactivité
* Date et heure de création du codespace
* Période de rétention

Pour plus d’informations, consultez [Référence CLI GitHub](https://cli.github.com/manual/gh_codespace_view).

### Arrêter un codespace

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

Pour plus d’informations, consultez « [Présentation approfondie de GitHub Codespaces](/fr/codespaces/about-codespaces/deep-dive#closing-or-stopping-your-codespace) ».

### Supprimer un codespace

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

Pour plus d’informations, consultez « [Suppression d’un codespace](/fr/codespaces/developing-in-a-codespace/deleting-a-codespace) ».

### Renommer un codespace

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

Pour plus d’informations, consultez « [Renommage d’un codespace](/fr/codespaces/customizing-your-codespace/renaming-a-codespace?tool=cli) ».

### Recréer un codespace

```shell
gh codespace rebuild
```

Pour effectuer une recréation complète, ajoutez `--full` à la fin de cette commande. Pour plus d’informations, consultez « [Reconstruction du conteneur dans un espace de code](/fr/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace) ».

Lorsque vous utilisez cette commande pour recréer un codespace, celle-ci utilise le fichier `devcontainer.json` actuellement enregistré dans le système du codespace. Cela se produit que l’état actuel du fichier ait été enregistré ou non dans le contrôle de code source. Pour plus d’informations, consultez « [Présentation des conteneurs de développement](/fr/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers) ».

### Établir une connexion SSH à un codespace

Pour exécuter des commandes sur la machine de codespace distante, à partir de votre terminal, vous pouvez établir une connexion SSH au codespace.

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

> \[!NOTE]
> Le codespace auquel vous vous connectez doit exécuter un serveur SSH. L’image conteneur de développeur par défaut comprend un serveur SSH, qui est démarré automatiquement. Si vos codespaces ne sont pas créés à partir de l’image par défaut, vous pouvez installer et démarrer un serveur SSH en ajoutant ce qui suit à l’objet `features` dans votre fichier `devcontainer.json`.
>
> ```jsonc
> "features": {
> // ...
> "ghcr.io/devcontainers/features/sshd:1": {
> "version": "latest"
> },
> // ...
> }
> ```
>
> Pour plus d’informations sur le fichier `devcontainer.json` et l’image conteneur par défaut, consultez [Présentation des conteneurs de développement](/fr/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers).

GitHub Codespaces crée automatiquement une clé SSH locale pour fournir une expérience d’authentification fluide. Pour plus d’informations sur la connexion avec SSH, consultez [`gh codespace ssh`](https://cli.github.com/manual/gh_codespace_ssh).

### Ouvrir un codespace dans Visual Studio Code

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

Vous devez avoir installé VS Code sur votre machine locale. Pour plus d’informations, consultez « [Utilisation des espaces de code GitHub dans Visual Studio Code](/fr/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code) ».

### Ouvrir un espace de code dans JupyterLab

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

L’application JupyterLab doit être installée dans le codespace que vous ouvrez. L’image conteneur de développeur par défaut comprend JupyterLab, donc les codespaces créés à partir de l’image par défaut ont toujours JupyterLab installé. Pour plus d’informations sur l’image par défaut, consultez [Présentation des conteneurs de développement](/fr/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration) et le référentiel [`devcontainers/images`](https://github.com/devcontainers/images/tree/main/src/universal). Si vous n’utilisez pas l’image par défaut dans votre configuration de conteneur de développement, vous pouvez installer JupyterLab en ajoutant le composant `ghcr.io/devcontainers/features/python` à votre fichier `devcontainer.json`. Vous devez inclure l’option `"installJupyterlab": true`. Pour plus d'informations, voir le LISEZMOI de la fonctionnalité [`python`](https://github.com/devcontainers/features/tree/main/src/python#python-python), dans le référentiel `devcontainers/features`.

### Copier un fichier vers/depuis un codespace

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

Utilisez le préfixe `remote:` sur un nom de fichier ou de répertoire pour indiquer qu’il se trouve sur le codespace. Comme avec la commande UNIX `cp`, le premier argument spécifie la source, et le dernier spécifie la destination. Si la destination est un répertoire, vous pouvez spécifier plusieurs sources. Utilisez l’indicateur `-r` (récursif) si l’une des sources est un répertoire.

L’emplacement des fichiers et répertoires sur le codespace est relatif au répertoire de base de l’utilisateur distant.

#### Exemples

* Copier un fichier de l’ordinateur local vers le répertoire `$HOME` d’un codespace :

  `gh codespace cp myfile.txt remote:`

* Copier un fichier vers le répertoire dans lequel un dépôt est extrait dans un codespace :

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

* Copier un fichier à partir d’un codespace vers le répertoire actif sur l’ordinateur local :

  `gh codespace cp remote:myfile.txt .`

* Copier trois fichiers locaux vers le répertoire `$HOME/temp` d’un codespace :

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

* Copier trois fichiers d’un codespace vers le répertoire de travail actuel sur l’ordinateur local :

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

* Copier un répertoire local vers le répertoire `$HOME` d’un codespace :

  `gh codespace cp -r mydir remote:`

* Copier un répertoire à partir d’un codespace vers l’ordinateur local, en modifiant le nom du répertoire :

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

Pour plus d’informations sur la commande `gh codespace cp`, y compris les indicateurs supplémentaires que vous pouvez utiliser, consultez le [manuel GitHub CLI](https://cli.github.com/manual/gh_codespace_cp).

### Modifier des ports dans un codespace

Vous pouvez transférer un port sur un codespace vers un port local. Le port reste transféré tant que le processus fonctionne. Pour arrêter le transfert du port, appuyez sur <kbd>Ctrl</kbd>+<kbd>C</kbd>.

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

Pour afficher les détails de ports transférés, entrez `gh codespace ports`, puis choisissez un codespace.

Vous pouvez définir la visibilité d’un port transféré. Il existe trois paramètres de visibilité :

* `private` - Visible uniquement par vous. Il s’agit du paramètre par défaut quand vous transférez un port.
* `org` - Visible par les membres de l’organisation propriétaire du dépôt.
* `public` - Visible par toute personne connaissant l’URL et le numéro de port.

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

Vous pouvez définir la visibilité de plusieurs ports avec une seule commande. Par exemple :

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

Pour plus d’informations, consultez « [Transfert de ports dans votre espace de code](/fr/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace) ».

### Accéder aux journaux de codespace

Vous pouvez voir le journal de création d’un codespace. Après avoir entré cette commande, vous êtes invité à entrer la phrase secrète pour votre clé SSH.

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

Pour plus d’informations sur le journal de création, consultez [Journaux GitHub Codespaces](/fr/codespaces/troubleshooting/github-codespaces-logs#creation-logs).

### Accéder aux ressources distantes

Vous pouvez utiliser l’extension GitHub CLI pour créer un pont entre un codespace et votre ordinateur local, afin que le codespace puisse accéder à n’importe quelle ressource distante accessible à partir de votre ordinateur. Pour plus d’informations sur l’utilisation de l’extension, consultez [Utilisation de GitHub CLI pour accéder aux ressources distantes](https://github.com/github/gh-net#codespaces-network-bridge).

> \[!NOTE]
> L’extension GitHub CLI est actuellement en préversion publique et peut faire l’objet de modification.

### Modifier le type de machine d’un codespace

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

Pour plus d’informations, consultez les informations sur l’onglet GitHub CLI dans [Modification du type de machine pour votre espace de code](/fr/codespaces/customizing-your-codespace/changing-the-machine-type-for-your-codespace).