GitHub Codespaces es un entorno de desarrollo instantáneo basado en la nube que usa un contenedor para proporcionar lenguajes comunes, herramientas y utilidades para el desarrollo. GitHub Codespaces también es configurable, lo cual te permite crear un entorno de desarrollo personalizado para tu proyecto. Al configurar un ambiente de desarrollo personalizado para tu proyecto, puedes tener una configuración de codespace repetible para todos los usuarios de dicho proyecto.
Creando tu codespace
Hay varios puntos de entrada para crear un codespace.
- Desde una plantilla de GitHub o desde cualquier repositorio de plantilla en GitHub para iniciar un nuevo proyecto
- Desde una rama en tu repositorio para el desarrollo de nuevas funcionalidades
- Desde un pull request abierto para investigar el trabajo en progreso
- Desde una confirmación en el historial de un repositorio para investigar un error en un punto específico del tiempo
Puede crear un codespace en GitHub, en Visual Studio Code o utilizando el GitHub CLI.
Tu codespace puede ser efímero si necesitas hacer pruebas en algo o puedes volver al mismo codespace para trabajar en características a largo plazo.
Para más información, consulta AUTOTITLE, AUTOTITLE y AUTOTITLE.
Nota:
Puedes crear más de un codespace por repositorio o incluso por rama. Sin embargo, hay límites para el número de codespaces que puede crear y el número de codespaces que puede ejecutar al mismo tiempo. Si alcanza el número máximo de codespaces e intenta crear otro, se muestra un mensaje que indica que debe quitar un codespace existente para poder crear uno nuevo.
Proceso de creación de un codespace
Al crear un codespace, se producen varios pasos en segundo plano antes de que el codespace esté disponible para ti.
Paso 1: Se asigna una MV y un almacenamiento a tu codespace
Al crear un codespace, se crea una máquina virtual (VM) mediante la versión estable o versión preliminar pública de la imagen de host de la máquina virtual. Para más información, consulta AUTOTITLE. La imagen de host define la versión de Linux que se usa para la VM. La VM es tanto dedicada como privada para ti. El tener una MV dedicada garantiza que tengas un conjunto completo de recursos de cómputo disponibles para ti desde esa máquina. Si es necesario, esto también te permitirá tener acceso de raíz total a tu contenedor.
Entonces, se genera un clon superficial de su repositorio o del repositorio de plantilla si va a crear un espacio de código a partir de una plantilla. Este se clona en el directorio de la VM y, posteriormente, se monta en el contenedor de desarrollador. Para obtener más información, consulta Acerca de la estructura de directorios de un codespace a continuación.
Paso 2: se crea el contenedor de desarrollador
GitHub Codespaces utiliza un contenedor Docker como entorno de desarrollo. Este contenedor se crea en función de las configuraciones que puedes definir en un archivo u, opcionalmente, en un Dockerfile. Si creas un codespace a partir de la plantilla en blanco de GitHub o desde un repositorio sin el archivo , GitHub Codespaces usa una imagen predeterminada, que tiene muchos lenguajes y tiempos de ejecución disponibles. Para más información, consulta AUTOTITLE. Para obtener detalles sobre lo que contiene la imagen predeterminada para contenedores de desarrollador, consulte el repositorio .
Nota:
Si quieres usar enlaces de Git en el codespace y aplicar cualquier elemento del directorio de plantillas Git al codespace, tendrás que configurar enlaces durante el paso 4 después de crear el contenedor.
Como el repositorio se clona en la máquina virtual host antes de crear el contenedor, todo lo que se encuentra en el directorio de plantillas de Git no se aplicará en el codespace a menos que configure enlaces en el archivo de configuración mediante en el paso 4. Para más información, consulta Paso 4: Configuración posterior a la creación.
Paso 3: Conectarse al codespace
Cuando tu contenedor se crea y se ejecuta cualquier otra inicialización, estarás conectado a tu codespace. Puedes conectarse a él mediante lo siguiente:
- El explorador web
- Visual Studio Code
- GitHub CLI
Paso 4: Configuración post-creación
Una vez que te conectes al codespace, la configuración automatizada podría continuar la compilación en función de la configuración especificada en el archivo . Es posible que vea y ejecutarse.
Si quieres usar hooks de Git en tu codespace, configúralos mediante los scripts de ciclo de vida, como . Para obtener más información sobre los scripts de ciclo de vida, consulta la especificación de los contenedores de desarrollo en el sitio web de los contenedores de desarrollo.
Si tienes un repositorio público de dotfiles para GitHub Codespaces, puedes habilitarlo para utilizarlo con nuevos codespaces. Cuando lo habilitas, tus dotfiles se clonarán en el contenedor y se invocará el script de instalación. Para más información, consulta AUTOTITLE.
Por último, si has creado el codespace desde un repositorio, todo el historial del repositorio se copiará con una clonación completa. Si has creado el codespace a partir de una plantilla, no se conservará el historial completo del repositorio de plantilla. En su lugar, a menos que uses la plantilla en blanco, empezarás con una confirmación inicial para el contenido del repositorio de plantilla.
Durante la configuración post-creación, aún podrás utilizar la terminal integrada y editar tus archivos, pero ten cuidado de evitar cualquier condiciones de carrera entre tu trabajo y los comandos que se están ejecutando.
Ciclo de vida de los Codespaces
Guardar archivos en tu codespace
Guarda los cambios en los archivos de la manera habitual, según el editor que estés usando.
Si trabajas en codespaces en Visual Studio Code, puedes habilitar el Guardado automático para asegurarte de que los cambios siempre se guardan.
Cerrar o detener su codespace
Tu espacio de código seguirá ejecutándose mientras lo usas, pero se desconectará después de un período de inactividad. Los cambios de archivo desde el editor y la salida del terminal se consideran actividad, por lo que tu espacio de código no se agotará si la salida del terminal continúa. El período de tiempo de espera de inactividad predeterminado es de 30 minutos. Puedes definir una configuración de tiempo de espera personal para los Codespaces que crees, pero una directiva de tiempo de espera de la organización puede anularla. Para más información, consulta AUTOTITLE.
Si se agota el tiempo de espera de un codespace, dejará de ejecutarse, pero puedes reiniciarlo desde la pestaña del explorador (si estabas usando el codespace en el explorador), desde VS Code o desde tu lista de codespaces en .
Para detener un codespace, puedes hacer lo siguiente:
- En el navegador: en tu lista de codespaces en [lugar específico], haz clic en los puntos suspensivos (...) situados a la derecha del codespace que deseas detener y haz clic en Detener codespace.
- En VS Code: abra Visual Studio Code Command Palette, por ejemplo, presionando Ctrl+Shift+P (Windows/Linux) o Shift+Command+P (Mac), escriba
Codespaces: stopy luego presione Enter. Para más información, consulta AUTOTITLE. - En una ventana del terminal: usa el comando de la GitHub CLI. Para más información, consulta AUTOTITLE.
Si sales de tu codespace sin ejecutar el comando para detenerlo (por ejemplo, cerrando la pestaña del explorador) o si dejas el codespace ejecutándose sin interacción, este y sus procesos en ejecución seguirán durante el período de tiempo de espera de inactividad.
Cuando cierras o detienes tu codespace, todos los cambios sin confirmar se preservan hasta que te conectes al codespace nuevamente.
Ejecutar tu aplicación
La redirección de puertos te otorga acceso a los puertos TCP que funcionan dentro de tu codespace. Por ejemplo, si estás ejecutando una aplicación web por el puerto 4000 dentro de tu codespace, puedes reenviar ese puerto automáticamente para hacer la aplicación accesible desde tu buscador.
El reenvío de puertos determina cuáles puertos se hacen accesibles para ti desde la máquina remota. Incluso si no reenvías un puerto, este será accesible para otros procesos que se ejecuten dentro del mismo codespace.

Cuando una aplicación que se ejecuta dentro de GitHub Codespaces da salida a un puerto hacia la consola, GitHub Codespaces detecta el patrón de URL del localhost y reenvía el puerto automáticamente. Puedes hacer clic en la dirección URL en el terminal, o en el enlace del mensaje de notificación de "toast" que aparece en la esquina inferior derecha de VS Code, para abrir el puerto en un navegador. De manera predeterminada, GitHub Codespaces reenvía el puerto utilizando HTTP. Para obtener más información sobre redirigir puertos, puedes consultar AUTOTITLE.
Si bien los puertos pueden reenviarse automáticamente, no son accesibles públicamente en la internet. Predeterminadamente, todos los puertos son privados, pero puedes poner a un puerto como disponible para tu organización o como público manualmente y luego compartir el acceso a través de una URL. Para más información, consulta AUTOTITLE.
El ejecutar tu aplicación cuando llegas por primera vez a tu codespace puede convertirse en un bucle de desarrollador interno rápido. Mientras editas, tus cambios se guardan automáticamente y se ponen disponibles en tu puerto reenviado. Para ver los cambios, regresa a la pestaña de la aplicación en ejecución en tu buscador y actualízala.
Confirmar y subir tus cambios
Git está instalado de manera predeterminada en tu codespace, por lo que puedes confiar en tu flujo de trabajo existente de Git. Puedes trabajar con Git en el Codespace mediante el Terminal o con las funciones de control de código fuente de VS Code.
Si estás trabajando con un repositorio existente, puedes crear un codespace desde cualquier rama, confirmación o solicitud de incorporación de cambios en el repositorio o puedes cambiar a una rama existente o nueva desde dentro de tu codespace activo. Ya que GitHub Codespaces está diseñado para ser efímero, puedes utilizarlo como un ambiente aislado para experimentar, verificar la solicitud de incorporación de cambios de un compañero o arreglar conflictos de fusión.
Si solo tienes acceso de lectura a un repositorio, puedes crear un codespace para el repositorio siempre que puedas bifurcarlo. Al realizar una confirmación desde el codespace, o insertar una nueva rama, GitHub Codespaces crea automáticamente una bifurcación del repositorio o vincula el codespace a una bifurcación existente si ya tienes una para el repositorio ascendente.
Si estás trabajando en un codespace creado a partir de una plantilla, Git se instala de manera predeterminada, pero tendrás que publicar el codespace en un repositorio remoto para conservar el trabajo y compartirlo con otros usuarios. Si empiezas a partir de la plantilla en blanco de GitHub, primero debes inicializar el área de trabajo como repositorio de Git (por ejemplo, escribiendo ) para comenzar a usar el control de código fuente en el codespace.
Para más información, consulta AUTOTITLE.
Nota:
Las confirmaciones desde el codespace se atribuirán al nombre y al correo electrónico público configurados en . Un token con ámbito del repositorio, incluido en el entorno como GITHUB_TOKEN, y las credenciales de GitHub se usarán para autenticarse.
Personalizar tu codespace con extensiones
Puedes agregar complementos y extensiones en un codespace para personalizar tu experiencia en VS Code.
Extensiones de VS Code
Si trabajas con los codespaces en la aplicación de escritorio de VS Code o en el cliente web, puedes agregar las extensiones que necesites desde Visual Studio Code Marketplace. Para obtener información sobre cómo se ejecutan las extensiones en GitHub Codespaces, consulta Compatibilidad con el desarrollo remoto y GitHub Codespaces en la documentación de VS Code.
Si ya usas VS Code, puedes usar Sincronización de ajustes para sincronizar automáticamente extensiones, configuraciones, temas y métodos abreviados de teclado entre la instancia local y los codespaces que crees.
Acerca de la estructura de directorios de un codespace
Al crear un codespace, el repositorio se clona en el directorio /workspaces del codespace. Es un directorio persistente que se monta en el contenedor. Todo cambio que se realice dentro de este directorio (incluida la edición, la adición o la eliminación de archivos) se conserva al detener e iniciar el codespace, así como al recompilar el contenedor en el codespace.
Fuera del directorio /workspaces, el codespace contiene una estructura de directorios de Linux que varía en función de la imagen de contenedor dev que se utiliza para compilar el codespace. Puede agregar archivos o realizar cambios en los archivos fuera del directorio /workspaces. Por ejemplo, puede instalar nuevos programas o puede establecer la configuración del shell en un archivo como ~/.bashrc. Como usuario no raíz, puede que no tengas acceso de escritura automáticamente a ciertos directorios, pero la mayoría de las imágenes permiten el acceso raíz a estos directorios con el comando sudo.
Fuera de /workspaces, a excepción del directorio /tmp, los directorios de un codespace están vinculados al ciclo de vida del contenedor. Esto significa que los cambios que se realicen se conservan al detener e iniciar el codespace, pero no al recompilar el contenedor. Para obtener más información sobre el directorio , consulta AUTOTITLE.
Borrar los directorios fuera de ayuda a asegurar que el contenedor recompilado esté en el mismo estado en el que estaría en un codespace recién creado. Si vas a volver a compilar un contenedor para aplicar cambios de configuración al codespace en el que estás trabajando, puedes estar seguro de que los cambios de configuración realizados funcionarán igual para los usuarios que creen nuevos codespaces con la misma configuración. Para más información, consulta AUTOTITLE.
Si deseas hacer cambios en tu espacio de código que sean más robustos durante las reconstrucciones y entre diferentes espacios de código, dispones de varias opciones.
- Para instalar programas y herramientas en todos los codespaces creados a partir de un repositorio, en la configuración del contenedor de desarrollo, puedes usar propiedades de comando de ciclo de vida, como , para ejecutar comandos de instalación personalizados, o puedes elegir entre comandos de instalación escritos previamente denominados "características". Para más información, consulta la especificación de contenedores de desarrollo en el sitio web Contenedores de desarrollo y AUTOTITLE.
- Para instalar herramientas o personalizar la configuración en cada codespace que crees, como configurar el perfil , puedes vincular GitHub Codespaces con un repositorio dotfiles. El repositorio dotfiles también se clona en el directorio persistente . Para más información, consulta AUTOTITLE.
- Si deseas conservar archivos específicos sobre una recompilación, puede usar un archivo para crear un enlace simbólico entre los archivos y un directorio persistente dentro de . Para más información, consulta AUTOTITLE.
Información adicional
- AUTOTITLE
- AUTOTITLE
- AUTOTITLE
- AUTOTITLE