https://github.com/github/docs-internal/pull/22217 https://github.com/github/docs-internal/pull/22130 https://github.com/github/docs-internal/pull/22195 https://github.com/github/docs-internal/pull/22327 https://github.com/github/docs-internal/pull/22204 https://github.com/github/docs-internal/pull/21676 https://github.com/github/docs-internal/pull/22341 https://github.com/github/docs-internal/pull/22329 https://github.com/github/docs-internal/pull/21970 https://github.com/github/docs-internal/pull/22334 https://github.com/github/docs-internal/pull/22365 https://github.com/github/docs-internal/pull/21904
7.7 KiB
title, shortTitle, intro, product, miniTocMaxHeadingLevel, versions, type, topics
| title | shortTitle | intro | product | miniTocMaxHeadingLevel | versions | type | topics | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Using Codespaces with GitHub CLI | GitHub CLI | You can work with {% data variables.product.prodname_github_codespaces %} directly from your command line by using `gh`, the {% data variables.product.product_name %} command line interface. | {% data reusables.gated-features.codespaces %} | 3 |
|
how_to |
|
About {% data variables.product.prodname_cli %}
{% data reusables.cli.about-cli %} For more information, see "About {% data variables.product.prodname_cli %}."
You can work with {% data variables.product.prodname_codespaces %} in the {% data variables.product.prodname_cli %} to:
- List your codespaces
- Create a codespace
- Stop a codespace
- Delete a codespace
- SSH into a codespace
- Open a codespace in {% data variables.product.prodname_vscode %}
- Copying a file to/from a codespace
- Modify ports in a codespace
- Access codespace logs
Installing {% data variables.product.prodname_cli %}
{% data reusables.cli.cli-installation %}
Using {% data variables.product.prodname_cli %}
If you have not already done so, run gh auth login to authenticate with your {% data variables.product.prodname_dotcom %} account.
To use gh to work with {% data variables.product.prodname_codespaces %}, type gh codespace <COMMAND> or its alias gh cs <COMMAND>.
As an example of a series of commands you might use to work with {% data variables.product.prodname_github_codespaces %}, you could:
- List your current codespaces, to check whether you have a codespace for a particular repository:
gh codespace list - Create a new codespace for the required repository branch:
gh codespace create -r github/docs -b main - SSH into the new codespace:
gh codespace ssh -c mona-github-docs-v4qxrv7rfwv9w - Forward a port to your local machine:
gh codespace ports forward 8000:8000 -c mona-github-docs-v4qxrv7rfwv9w
gh commands for {% data variables.product.prodname_github_codespaces %}
The sections below give example commands for each of the available operations.
For a complete reference of gh commands for {% data variables.product.prodname_github_codespaces %}, including details of all available options for each command, see the {% data variables.product.prodname_cli %} online help for "gh codespace." Alternatively, use gh codespace [<SUBCOMMAND>...] --help on the command line.
{% note %}
Note: The -c <em>codespace-name</em> flag, used with many commands, is optional. If you omit it a list of codespaces is displayed for you to choose from.
{% endnote %}
List all of your codespaces
gh codespace list
The list includes the unique name of each codespace, which you can use in other gh codespace commands.
Create a new codespace
gh codespace create -r <em>owner/repository</em> [-b <em>branch</em>]
For more information, see "Creating a codespace."
Stop a codespace
gh codespace stop -c <em>codespace-name</em>
For more information, see "Deep dive into Codespaces."
Delete a codespace
gh codespace delete -c <em>codespace-name</em>
For more information, see "Deleting a codespace."
SSH into a codespace
To run commands on the remote codespace machine, from your terminal, you can SSH into the codespace.
gh codespace ssh -c <em>codespace-name</em>
{% data variables.product.prodname_github_codespaces %} copies your GitHub SSH keys into the codespace on creation for a seamless authentication experience. You may be asked to enter the passphrase for your SSH key, after which you will get a command prompt from the remote codespace machine.
If you don't have any SSH keys, follow the instructions in "Generating a new SSH key and adding it to the ssh-agent."
Open a codespace in {% data variables.product.prodname_vscode %}
gh codespace code -c <em>codespace-name</em>
For more information, see "Using {% data variables.product.prodname_codespaces %} in {% data variables.product.prodname_vscode %}."
Copy a file to/from a codespace
gh codespace cp [-r] <em>source(s)</em> <em>destination</em>
Use the prefix remote: on a file or directory name to indicate that it's on the codespace. As with the UNIX cp command, the first argument specifies the source and the last specifies the destination. If the destination is a directory, you can specify multiple sources. Use the -r (recursive) flag if any of the sources is a directory.
The location of files and directories on the codespace is relative to the home directory of the remote user.
Examples
-
Copy a file from the local machine to the
$HOMEdirectory of a codespace:gh codespace cp myfile.txt remote: -
Copy a file to the directory in which a repository is checked out in a codespace:
gh codespace cp myfile.txt remote:/workspaces/<REPOSITORY-NAME> -
Copy a file from a codespace to the current directory on the local machine:
gh codespace cp remote:myfile.txt . -
Copy three local files to the
$HOME/tempdirectory of a codespace:gh codespace cp a1.txt a2.txt a3.txt remote:temp -
Copy three files from a codespace to the current working directory on the local machine:
gh codespace cp remote:a1.txt remote:a2.txt remote:a3.txt . -
Copy a local directory into the
$HOMEdirectory of a codespace:gh codespace cp -r mydir remote: -
Copy a directory from a codespace to the local machine, changing the directory name:
gh codespace cp -r remote:mydir mydir-localcopy
For more information about the gh codespace cp command, including additional flags you can use, see the {% data variables.product.prodname_cli %} manual.
Modify ports in a codespace
You can forward a port on a codespace to a local port. The port remains forwarded as long as the process is running. To stop forwarding the port, press control+c.
gh codespace ports forward <em>codespace-port-number</em>:<em>local-port-number</em> -c <em>codespace-name</em>
To see details of forwarded ports enter gh codespace ports and then choose a codespace.
You can set the visibility of a forwarded port. {% data reusables.codespaces.port-visibility-settings %}
gh codespace ports visibility <em>codespace-port</em>:<em>private|org|public</em> -c <em>codespace-name</em>
You can set the visibility for multiple ports with one command. For example:
gh codespace ports visibility 80:private 3000:public 3306:org -c <em>codespace-name</em>
For more information, see "Forwarding ports in your codespace."
Access codespace logs
You can see the creation log for a codespace. After entering this command you will be asked to enter the passphrase for your SSH key.
gh codespace logs -c <em>codespace-name</em>
For more information about the creation log, see "Codespaces logs."