1
0
mirror of synced 2025-12-23 11:54:18 -05:00
Files
docs/content/codespaces/getting-started/deep-dive.md
hubwriter 79285d5e92 [23 Feb]: Codespaces prebuilds- [Public Beta] (#25066)
* Draft - add copy from Google doc

* Add images

* More WiP

* test (#25121)

* Update actions-scheduled-workflow-example.md

The editor when changing a CRON time says the most frequent is 5 minutes. Either this section is incorrect or the editor pop over..

* Fix "labels" type

* Add apps permissions for code scanning org endpoint. (#24859)

* cope with possible translation drift (#24842)

* cope with possible translation drift

* fix test

* don't shallow clone

* fix unit tests

* update code comments

* more code comment corrections

* more code comment

* feedbacked

* Add 💅

* Remove yzhang.markdown-all-in-one extension

The markdown-all-in-one extension prevents Alfred expansions happening correctly.

* Revert Add apps permissions for code scanning org endpoint (#25023)

* Add security overview to github-security-features.md

* updating ghcr_token github_token

* archived asset redirects (#25025)

* updating ghec_token to github_token

* set 'manul-purge' surrogate key on assets/cb- URLs (#25028)

* Member privileges edit for forking help doc (#24934)

* calm down Backfill logging (#25031)

* [Feb. 2, 2022] Updates for settings nav redesign (#24604)

* Replace accessibility-tab.png with octicon

* Update and version appearance-tab references

* Replace codespaces-tab.png with octicon

* Replace product name with reusable

* Version reusable using developer-settings.png

* Version reusable using notifcations_menu.png

* Replace org-settings-pages.png with octicon

* Version reusable using repos-tab.png

* Version reusable using saved-replies-tab.png

* Version reusable with settings-applications.png

* Version reusable with settings-sidebar-account-security.png

* version reusable with settings-sidebar-account-settings.png

* Replace settings-sidebar-billing-plans.png with octicon

* Replace settings-sidebar-blocked-users.png with octicon

* Version settings-sidebar-deploy-keys.png

* Version reusable with settings-sidebar-emails.png

* Replace settings-sidebar-interaction-limits.png with octicon

* Replace settings-sidebar-organizations.png with octicon

* Version use of settings-sidebar-repositories.png

* Version reusable with settings-seidebar-security-analysis.png

* Version reusable with settings-sidebar-ssh-keys.png

* Version reusable with settings-sidebar-team-settings.png

* Replace settings-sidebar-third-party-access.png with octicon

* Version reusable with settings-user-orgs.png

* Replace user-settings-pages.png with octicon

* Update pages octicon

* Add explicit versions to elsif tags

* Rewording for consistency

* Improve versioning for future GHAE

* Add missing space

Co-authored-by: Felicity Chapman <felicitymay@github.com>

Co-authored-by: Felicity Chapman <felicitymay@github.com>

* update search indexes

* New translation batch for es (#25035)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/fix-translation-errors.js

* Run script/i18n/lint-translation-files.js --check parsing

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=es

* run script/i18n/reset-known-broken-translation-files.js

* Check in es CSV report

* Remove duplicated word (#24974)

* Fix when we show the 'All Enterprise Releases' link (#25002)

* Enterprise versions start with 'enterprise-server'

* Show only if all versions are ghes versions

* Show link if there's any ghes versioning

* Depend on the path for the tool switcher (#25018)

* Azure: use shared env setter, fix comment workflow (#25044)

* update azure deployments to use shared env getter, fix content changes table

* update search indexes

* update search indexes

* Update workflow-syntax-for-github-actions.md

* New translation batch for pt (#25050)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/fix-translation-errors.js

* Run script/i18n/lint-translation-files.js --check parsing

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=pt

* run script/i18n/reset-known-broken-translation-files.js

* update search indexes

* The missing full stop was added.

* update search indexes

* update search indexes

* New translation batch for pt (#25057)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/fix-translation-errors.js

* Run script/i18n/lint-translation-files.js --check parsing

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=pt

* run script/i18n/reset-known-broken-translation-files.js

* New translation batch for es (#25058)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/fix-translation-errors.js

* Run script/i18n/lint-translation-files.js --check parsing

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=es

* run script/i18n/reset-known-broken-translation-files.js

* update search indexes

* update search indexes

* Update OpenAPI  Descriptions (#25047)

* update search indexes

* Enterprise bug fixes: week of Jan 31, 2022 (#25043)

* delete the workflow linter (#25075)

* an empty 'product', 'permissions', or 'learningTracks' gets stuck (#25070)

* and empty 'this.product' gets stuck

* add test to prove change

* Update OpenAPI  Descriptions (#25071)

* Update OpenAPI  Descriptions (#25076)

* Update OpenAPI  Descriptions

* Add decorated OpenAPI schema files

Co-authored-by: github-openapi-bot <github-openapi-bot@users.noreply.github.com>

* basic tests of the search API (#25069)

* basic tests of the search API

* lfs

* Revert "Revert Add apps permissions for code scanning org endpoint (#25023)" (#25026)

* update website-scraper to update transitive nth-check dep (#25080)

* update search indexes

* New translation batch for es (#25088)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/fix-translation-errors.js

* Run script/i18n/lint-translation-files.js --check parsing

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=es

* run script/i18n/reset-known-broken-translation-files.js

* Update code-scanning-alert.png (#25072)

* use manual surrogate key for nextjs static assets (#25096)

* use manual surrogate key for nextjs static assets

* refactor

* update search indexes

* Update differences-between-clustering-and-high-availability-ha.md (#25107)

* Update OpenAPI  Descriptions (#25104)

* Add versioning for GHAE 3.3 (#24936)

* Update content/code-security/getting-started/github-security-features.md

* update search indexes

* [Actions] `push` event does not have Activity types (#15124)

* 📝 Clarify usage of single quotes in string datatype for literals (#14895)

* Fix value of GITHUB_REF for release events (#14876)

* New translation batch for pt (#25084)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/fix-translation-errors.js

* Run script/i18n/lint-translation-files.js --check parsing

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=pt

* run script/i18n/reset-known-broken-translation-files.js

Co-authored-by: Mike Surowiec <mikesurowiec@users.noreply.github.com>

* New translation batch for ja (#25093)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/lint-translation-files.js --check parsing

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=ja

* run script/i18n/reset-known-broken-translation-files.js

* Check in ja CSV report

Co-authored-by: Mike Surowiec <mikesurowiec@users.noreply.github.com>

* New translation batch for cn (#25090)

* Add crowdin translations

* Run script/i18n/homogenize-frontmatter.js

* Run script/i18n/lint-translation-files.js --check parsing

* Run script/i18n/lint-translation-files.js --check rendering

* run script/i18n/reset-files-with-broken-liquid-tags.js --language=cn

* run script/i18n/reset-known-broken-translation-files.js

* Check in cn CSV report

Co-authored-by: Mike Surowiec <mikesurowiec@users.noreply.github.com>

* Create github-debian.sh

* Update Dockerfile

* Update procedures for personal account recovery with two-factor authentication (#25040)

* delete old deploy.js script (#24862)

Co-authored-by: Mark Battistella <markbattistella@users.noreply.github.com>
Co-authored-by: Emily Grace Seville <emilyseville7cf@gmail.com>
Co-authored-by: Octomerger Bot <63058869+Octomerger@users.noreply.github.com>
Co-authored-by: Anders Starcke Henriksen <starcke@github.com>
Co-authored-by: Peter Bengtsson <mail@peterbe.com>
Co-authored-by: Laura Coursen <lecoursen@github.com>
Co-authored-by: lucie-docs <40564413+lucie-docs@users.noreply.github.com>
Co-authored-by: Josh Johanning <joshjohanning@github.com>
Co-authored-by: Tahlia G <84726379+tahlialouisa@users.noreply.github.com>
Co-authored-by: Ethan Palm <56270045+ethanpalm@users.noreply.github.com>
Co-authored-by: Felicity Chapman <felicitymay@github.com>
Co-authored-by: GitHub Actions <action@github.com>
Co-authored-by: docubot <67483024+docubot@users.noreply.github.com>
Co-authored-by: Simon Giesemann <kwacky1@github.com>
Co-authored-by: Robert Sese <rsese@github.com>
Co-authored-by: Mike Surowiec <mikesurowiec@users.noreply.github.com>
Co-authored-by: Albin PK <56157868+albinpk@users.noreply.github.com>
Co-authored-by: Dasun Tharanga <dasuntharangaflash@gmail.com>
Co-authored-by: github-openapi-bot <69533958+github-openapi-bot@users.noreply.github.com>
Co-authored-by: Ramya Parimi <33761166+ramyaparimi@users.noreply.github.com>
Co-authored-by: github-openapi-bot <github-openapi-bot@users.noreply.github.com>
Co-authored-by: Matt Pollard <mattpollard@users.noreply.github.com>
Co-authored-by: Dorothy Mitchell <dorothymitchell@github.com>
Co-authored-by: Andy J <mumfy@github.com>
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
Co-authored-by: Marko Kaznovac <kaznovac@users.noreply.github.com>
Co-authored-by: Anil Seervi <61609033+AnilSeervi@users.noreply.github.com>
Co-authored-by: Johanan Idicula <johanan@forcepush.tech>

* Add more screenshots

* complete items on plan

* Revert changes to files I didn't change

* Minor tweaks

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Remove detail about building prebuilds by rerunning a workflow

After deleting a prebuild configuration anyone who can access the workflow history can recreate the prebuilds by rerunning the previous workflow run - unless you go through manually deleting all of those entries from the workflow history. Removed this information as per review comment.

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Update content/codespaces/customizing-your-codespace/prebuilding-codespaces-for-your-project.md

* Update data/reusables/codespaces/billing-for-prebuilds.md

* Update data/reusables/codespaces/billing-for-prebuilds.md

* Restructure info into separate articles

* Update content/codespaces/prebuilding-your-codespaces/about-codespaces-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Move prerequisites section

* Move billing info

* Update content/codespaces/prebuilding-your-codespaces/configuring-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/configuring-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/configuring-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Update data/reusables/codespaces/billing-for-prebuilds.md

* Update data/reusables/codespaces/billing-for-prebuilds.md

Co-authored-by: Laura Coursen <lecoursen@github.com>

* Move deletion points, as per review comment

* Update link

* Add links to new information

* Make review comment changes

* Update content/codespaces/prebuilding-your-codespaces/managing-prebuilds.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Update content/codespaces/prebuilding-your-codespaces/testing-dev-container-changes.md

* Update content/codespaces/prebuilding-your-codespaces/testing-dev-container-changes.md

Co-authored-by: Jackie Jiménez <jaclynj@github.com>

* Optimize images

Co-authored-by: Mark Battistella <markbattistella@users.noreply.github.com>
Co-authored-by: Emily Grace Seville <emilyseville7cf@gmail.com>
Co-authored-by: Octomerger Bot <63058869+Octomerger@users.noreply.github.com>
Co-authored-by: Anders Starcke Henriksen <starcke@github.com>
Co-authored-by: Peter Bengtsson <mail@peterbe.com>
Co-authored-by: Laura Coursen <lecoursen@github.com>
Co-authored-by: lucie-docs <40564413+lucie-docs@users.noreply.github.com>
Co-authored-by: Josh Johanning <joshjohanning@github.com>
Co-authored-by: Tahlia G <84726379+tahlialouisa@users.noreply.github.com>
Co-authored-by: Ethan Palm <56270045+ethanpalm@users.noreply.github.com>
Co-authored-by: Felicity Chapman <felicitymay@github.com>
Co-authored-by: GitHub Actions <action@github.com>
Co-authored-by: docubot <67483024+docubot@users.noreply.github.com>
Co-authored-by: Simon Giesemann <kwacky1@github.com>
Co-authored-by: Robert Sese <rsese@github.com>
Co-authored-by: Mike Surowiec <mikesurowiec@users.noreply.github.com>
Co-authored-by: Albin PK <56157868+albinpk@users.noreply.github.com>
Co-authored-by: Dasun Tharanga <dasuntharangaflash@gmail.com>
Co-authored-by: github-openapi-bot <69533958+github-openapi-bot@users.noreply.github.com>
Co-authored-by: Ramya Parimi <33761166+ramyaparimi@users.noreply.github.com>
Co-authored-by: github-openapi-bot <github-openapi-bot@users.noreply.github.com>
Co-authored-by: Matt Pollard <mattpollard@users.noreply.github.com>
Co-authored-by: Dorothy Mitchell <dorothymitchell@github.com>
Co-authored-by: Andy J <mumfy@github.com>
Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com>
Co-authored-by: Marko Kaznovac <kaznovac@users.noreply.github.com>
Co-authored-by: Anil Seervi <61609033+AnilSeervi@users.noreply.github.com>
Co-authored-by: Johanan Idicula <johanan@forcepush.tech>
Co-authored-by: Jackie Jiménez <jaclynj@github.com>
Co-authored-by: github-actions <github-actions@github.com>
2022-02-23 17:52:53 +00:00

11 KiB

title, intro, allowTitleToDifferFromFilename, product, versions, type, topics
title intro allowTitleToDifferFromFilename product versions type topics
Deep dive into Codespaces Understand how {% data variables.product.prodname_codespaces %} works. true {% data reusables.gated-features.codespaces %}
fpt ghec
* *
quick_start
Codespaces

{% data variables.product.prodname_codespaces %} is an instant, cloud-based development environment that uses a container to provide you with common languages, tools, and utilities for development. {% data variables.product.prodname_codespaces %} is also configurable, allowing you to create a customized development environment for your project. By configuring a custom development environment for your project, you can have a repeatable codespace configuration for all users of your project.

Creating your codespace

There are a number of entry points to create a codespace.

  • From your repository for new feature work.
  • From an open pull request to explore work-in-progress.
  • From a commit in the repository's history to investigate a bug at a specific point in time.
  • From {% data variables.product.prodname_vscode %}.

Your codespace can be ephemeral if you need to test something or you can return to the same codespace to work on long-running feature work. For more information, see "Creating a codespace."

Once you've selected the option to create a new codespace, and chosen a machine type for your codespace, some steps happen in the background before the codespace is available to you.

Open with Codespaces button

Step 1: VM and storage are assigned to your codespace

When you create a codespace, a shallow clone of your repository is made on a Linux virtual machine that is both dedicated and private to you. Having a dedicated VM ensures that you have the entire set of compute resources from that machine available to you. If necessary, this also allows you to have full root access to your container.

Step 2: Container is created

{% data variables.product.prodname_codespaces %} uses a container as the development environment. This container is created based on the configurations that you can define in a devcontainer.json file and/or Dockerfile in your repository. If you don't configure a container, {% data variables.product.prodname_codespaces %} uses a default image, which has many languages and runtimes available. For information on what the default image contains, see the vscode-dev-containers repository.

{% note %}

Note: If you want to use Git hooks in your codespace and apply anything in the git template directory to your codespace, then you must set up hooks during step 4 after the container is created.

Since your repository is cloned onto the host VM before the container is created, anything in the git template directory will not apply in your codespace unless you set up hooks in your devcontainer.json configuration file using the postCreateCommand in step 4. For more information, see "Step 4: Post-creation setup."

{% endnote %}

Step 3: Connecting to the codespace

When your container has been created and any other initialization has run, you'll be connected to your codespace. You can connect to it through the web or via Visual Studio Code, or both, if needed.

Step 4: Post-creation setup

Once you are connected to your codespace, your automated setup may continue to build based on the configuration you specified in your devcontainer.json file. You may see postCreateCommand and postAttachCommand run.

If you want to use Git hooks in your codespace, set up hooks using the devcontainer.json lifecycle scripts, such as postCreateCommand. For more information, see the devcontainer.json reference in the Visual Studio Code documentation.

If you have a public dotfiles repository for {% data variables.product.prodname_codespaces %}, you can enable it for use with new codespaces. When enabled, your dotfiles will be cloned to the container and the install script will be invoked. For more information, see "Personalizing {% data variables.product.prodname_codespaces %} for your account."

Finally, the entire history of the repository is copied down with a full clone.

During post-creation setup you'll still be able to use the integrated terminal and make edits to your files, but take care to avoid any race conditions between your work and the commands that are running.

{% data variables.product.prodname_codespaces %} lifecycle

Saving files in your codespace

As you develop in your codespace, it will save any changes to your files every few seconds. Your codespace will keep running for 30 minutes after the last activity. After that time it will stop running but you can restart it from either from the existing browser tab or the list of existing codespaces. File changes from the editor and terminal output are counted as activity and so your codespace will not stop if terminal output is continuing.

{% note %}

Note: Changes in a codespace in {% data variables.product.prodname_vscode %} are not saved automatically, unless you have enabled Auto Save. {% endnote %}

Closing or stopping your codespace

To stop your codespace you can use the {% data variables.product.prodname_vscode_command_palette %} (Shift + Command + P (Mac) / Ctrl + Shift + P (Windows)). If you exit your codespace without running the stop command (for example, closing the browser tab), or if you leave the codespace running without interaction, the codespace and its running processes will continue until a window of inactivity occurs, after which the codespace will stop. By default, the window of inactivity is 30 minutes.

When you close or stop your codespace, all uncommitted changes are preserved until you connect to the codespace again.

Running your application

Port forwarding gives you access to TCP ports running within your codespace. For example, if you're running a web application on port 4000 within your codespace, you can automatically forward that port to make the application accessible from your browser.

Port forwarding determines which ports are made accessible to you from the remote machine. Even if you do not forward a port, that port is still accessible to other processes running inside the codespace itself.

Diagram showing how port forwarding works in a codespace

When an application running inside {% data variables.product.prodname_codespaces %} outputs a port to the console, {% data variables.product.prodname_codespaces %} detects the localhost URL pattern and automatically forwards the port. You can click on the URL in the terminal or in the toast message to open the port in a browser. By default, {% data variables.product.prodname_codespaces %} forwards the port using HTTP. For more information on port forwarding, see "Forwarding ports in your codespace."

While ports can be forwarded automatically, they are not publicly accessible to the internet. By default, all ports are private, but you can manually make a port available to your organization or public, and then share access through a URL. For more information, see "Sharing a port."

Running your application when you first land in your codespace can make for a fast inner dev loop. As you edit, your changes are automatically saved and available on your forwarded port. To view changes, go back to the running application tab in your browser and refresh it.

Committing and pushing your changes

Git is available by default in your codespace and so you can rely on your existing Git workflow. You can work with Git in your codespace either via the Terminal or by using Visual Studio Code's source control UI. For more information, see "Using source control in your codespace"

Running git status in Codespaces Terminal

You can create a codespace from any branch, commit, or pull request in your project, or you can switch to a new or existing branch from within your active codespace. Because {% data variables.product.prodname_codespaces %} is designed to be ephemeral, you can use it as an isolated environment to experiment, check a teammate's pull request, or fix merge conflicts. You can create more than one codespace per repository or even per branch. However, each user account has a limit of 10 codespaces. If you've reached the limit and want to create a new codespace, you must delete a codespace first.

{% note %}

Note: Commits from your codespace will be attributed to the name and public email configured at https://github.com/settings/profile. A token scoped to the repository, included in the environment as GITHUB_TOKEN, and your GitHub credentials will be used to authenticate.

{% endnote %}

Personalizing your codespace with extensions

Using {% data variables.product.prodname_vscode %} in your codespace gives you access to the {% data variables.product.prodname_vscode %} Marketplace so that you can add any extensions you need. For information on how extensions run in {% data variables.product.prodname_codespaces %}, see Supporting Remote Development and GitHub Codespaces in the {% data variables.product.prodname_vscode %} docs.

If you already use {% data variables.product.prodname_vscode %}, you can use Settings Sync to automatically sync extensions, settings, themes, and keyboard shortcuts between your local instance and any {% data variables.product.prodname_codespaces %} you create.

Further reading