GitHub Codespaces 是 GitHub 提供的云端开发环境服务,它基于 Visual Studio Code 的底层架构,允许开发者直接在浏览器或本地 VS Code 中连接到一个运行在云端的完整开发容器。每个 Codespace 实际上是一台托管在 Microsoft Azure 云基础设施上的虚拟机,预装了完整的 Linux 操作系统、常用的开发工具链以及用户自定义的运行时环境。开发者无需在本地机器上安装任何 SDK、编译器或数据库,只需一个浏览器即可开始编写、构建、测试和调试代码。
Codespaces 的核心理念是将开发环境代码化(Environment as Code)。传统的开发环境搭建往往需要花费数小时甚至数天来安装依赖、配置路径、调试版本兼容性问题,而 Codespaces 通过 devcontainer.json 配置文件将整个开发环境的定义纳入版本控制,使得任何团队成员在任何设备上都能获得完全一致的开发体验。这不仅大幅降低了新成员的上手成本,也彻底消除了"在我机器上能跑"这类经典问题。
| 优势维度 | 具体说明 |
|---|---|
| 零配置启动 | 从打开仓库到进入可编辑的 IDE 界面,通常只需 10-30 秒 |
| 环境一致性 | 团队所有成员共享相同的 OS、运行时、工具链和扩展配置 |
| 设备无关性 | 支持 Chromebook、iPad、Android 平板等低性能设备进行专业开发 |
| 弹性算力 | 可选择 2 核 / 4 核 / 8 核 / 16 核 / 32 核 CPU,内存从 8GB 到 64GB |
| 安全隔离 | 每个 Codespace 运行在独立的虚拟机中,彼此完全隔离 |
| Git 深度集成 | 自动使用 GitHub 身份认证,无需额外配置 SSH 密钥或个人访问令牌 |
GitHub Codespaces 的计费单位是核心小时(core-hour),即 CPU 核心数乘以使用小时数。
| 计划 | 每月免费额度 | 2 核机器可用时长 | 超出费用(每核心小时) |
|---|---|---|---|
| Free | 120 核心小时 | 约 60 小时 | $0.18 |
| Pro | 180 核心小时 | 约 90 小时 | $0.18 |
| Team | 180 核心小时/用户 | 约 90 小时/用户 | $0.18 |
| Enterprise | 可自定义 | 可自定义 | 可协商 |
计费示例:
假设你使用 4 核 CPU 的机器配置,每天工作 4 小时:
- 每天消耗:4 核 × 4 小时 = 16 核心小时
- 每月消耗(22 个工作日):16 × 22 = 352 核心小时
- Free 计划免费额度:120 核心小时
- 超出部分费用:(352 - 120) × $0.18 = $41.76
重要提示: Codespace 停止运行后不会继续计费,但存储费用仍会累积。默认存储费用为 $0.07/GB/月,包含在免费额度中。每个 Codespace 默认有 15GB 的存储空间。
最简单的创建方式是直接在 GitHub 仓库页面操作:
- 打开任意 GitHub 仓库页面(例如
https://github.com/microsoft/vscode) - 点击页面上方绿色的 Code 按钮
- 切换到 Codespaces 标签页
- 点击 Create codespace on main(默认在 main 分支上创建)
GitHub 会自动为你选择一个合适的机器配置(通常是 2 核),然后开始构建开发容器。首次创建可能需要 1-3 分钟来拉取镜像和安装依赖,后续启动会快很多(通常 10-30 秒),因为镜像已经被缓存。
创建完成后,浏览器会自动跳转到一个完整的 VS Code Web 界面,你可以在终端中直接运行命令、编写代码、安装扩展,一切都和本地 VS Code 几乎完全一样。
在创建 Codespace 时,你可以点击 Machine type 下拉菜单选择不同的机器规格:
| 机器类型 | CPU 核心 | 内存 | 存储 | 适用场景 |
|---|---|---|---|---|
| 2 核 | 2 vCPU | 8 GB | 32 GB | 轻量编辑、文档编写 |
| 4 核 | 4 vCPU | 16 GB | 32 GB | 中小型项目开发 |
| 8 核 | 8 vCPU | 32 GB | 64 GB | 大型项目、需要编译构建 |
| 16 核 | 16 vCPU | 32 GB | 64 GB | 高性能计算、CI 模拟 |
| 32 核 | 32 vCPU | 64 GB | 128 GB | 超大型项目、性能测试 |
如果你更喜欢使用本地 VS Code 桌面版,可以安装 GitHub Codespaces 扩展:
- 打开 VS Code,进入扩展市场
- 搜索并安装 GitHub Codespaces 扩展(发布者为 GitHub)
- 安装完成后,按
Ctrl+Shift+P(macOS 为Cmd+Shift+P)打开命令面板 - 输入
Codespaces: Create New Codespace - 选择仓库和分支
- 选择机器配置
- VS Code 会自动连接到远程 Codespace
这种方式的优势是你可以使用本地 VS Code 的全部功能,包括自定义主题、快捷键绑定和本地扩展。
# 安装 GitHub CLI(如未安装)
# macOS
brew install gh
# Windows
winget install --id GitHub.cli
# Ubuntu/Debian
sudo apt install gh
# 登录 GitHub
gh auth login
# 创建 Codespace(默认配置)
gh codespace create --repo owner/repo-name
# 指定分支和机器配置
gh codespace create --repo owner/repo-name --branch dev --machine 4-core
# 列出所有 Codespaces
gh codespace list
# 查看某个 Codespace 的详细信息
gh codespace view --codespace codespace-name每个 Codespace 都有以下几种状态:
- Running(运行中): 正在消耗核心小时,可以通过浏览器或 VS Code 访问
- Stopped(已停止): 不消耗核心小时,但存储仍在计费
- Deleted(已删除): 所有数据永久清除,不再计费
# 停止 Codespace
gh codespace stop --codespace codespace-name
# 启动已停止的 Codespace
gh codespace start --codespace codespace-name
# 删除 Codespace(不可恢复)
gh codespace delete --codespace codespace-name
# 批量删除所有已停止的 Codespace
gh codespace list --json name,state | jq -r '.[] | select(.state=="Available") | .name' | xargs -I {} gh codespace delete -c {}自动停止策略: GitHub 默认在 Codespace 空闲 30 分钟后自动停止。你可以在 Settings → Codespaces 中修改这个超时时间,可选范围从 5 分钟到 240 分钟。合理设置超时时间可以有效避免忘记关闭 Codespace 导致的不必要费用。
devcontainer.json 是开发容器规范(Dev Container Specification)的核心配置文件,它定义了 Codespace 启动时应该使用的镜像、安装的工具、配置的扩展、转发的端口以及各种初始化脚本。这个文件通常放在项目根目录的 .devcontainer/ 文件夹下。
当你创建一个 Codespace 时,GitHub 会首先检查仓库中是否存在 devcontainer.json 文件。如果存在,就按照其中的定义来构建开发容器;如果不存在,则使用默认的通用开发容器镜像。
以下是一个包含所有常用字段的 devcontainer.json 示例:
{
"name": "我的全栈项目开发环境",
"image": "mcr.microsoft.com/devcontainers/javascript-node:20",
"forwardPorts": [3000, 5432, 8080],
"portsAttributes": {
"3000": {
"label": "前端应用",
"onAutoForward": "openBrowser",
"visibility": "public"
},
"5432": {
"label": "PostgreSQL 数据库",
"onAutoForward": "notify",
"visibility": "private"
},
"8080": {
"label": "后端 API",
"onAutoForward": "silent",
"visibility": "public"
}
},
"postCreateCommand": "npm install && npm run db:migrate",
"postStartCommand": "echo '环境就绪!'",
"postAttachCommand": "git pull",
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-vscode.vscode-typescript-next",
"bradlc.vscode-tailwindcss",
"prisma.prisma"
],
"settings": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"terminal.integrated.defaultProfile.linux": "zsh"
}
}
},
"remoteUser": "vscode",
"containerUser": "vscode",
"mounts": [
"source=${localEnv:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind,readonly"
],
"containerEnv": {
"NODE_ENV": "development",
"DATABASE_URL": "postgresql://localhost:5432/mydb"
},
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/node:1": { "version": "20" }
},
"runArgs": ["--memory=4g", "--cpus=2"],
"hostRequirements": {
"cpus": 4,
"memory": "8gb",
"storage": "32gb"
}
}| 镜像名称 | 适用场景 | 包含内容 |
|---|---|---|
mcr.microsoft.com/devcontainers/javascript-node:20 |
Node.js 项目 | Node.js 20、npm、yarn、Git |
mcr.microsoft.com/devcontainers/python:3.12 |
Python 项目 | Python 3.12、pip、Git |
mcr.microsoft.com/devcontainers/java:17 |
Java 项目 | JDK 17、Gradle、Maven、Git |
mcr.microsoft.com/devcontainers/go:1.22 |
Go 项目 | Go 1.22、Git |
mcr.microsoft.com/devcontainers/rust:1 |
Rust 项目 | Rust 工具链、Git |
mcr.microsoft.com/devcontainers/cpp:debian-12 |
C/C++ 项目 | GCC、CMake、Git |
mcr.microsoft.com/devcontainers/dotnet:8.0 |
.NET 项目 | .NET 8.0 SDK、Git |
mcr.microsoft.com/devcontainers/universal:2 |
通用环境 | 多语言支持 |
devcontainer.json 中有四个生命周期钩子命令,它们按以下顺序执行:
onCreateCommand: 仅在容器首次创建时运行(安装全局包、系统级依赖)postCreateCommand: 容器创建后运行(安装项目依赖、数据库迁移)postStartCommand: 每次容器启动时运行(拉取最新代码、启动服务)postAttachCommand: 每次 VS Code 连接到容器时运行(显示欢迎信息)
{
"onCreateCommand": "npm install -g typescript nodemon",
"postCreateCommand": "npm install && cp .env.example .env",
"postStartCommand": "git fetch --all",
"postAttachCommand": "echo '👋 欢迎进入开发环境!'"
}Features 是预打包的开发工具安装单元,可以像搭积木一样组合:
{
"image": "mcr.microsoft.com/devcontainers/base:debian-12",
"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "20",
"nodeGypDependencies": true
},
"ghcr.io/devcontainers/features/python:1": {
"version": "3.12",
"installTools": true
},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"dockerDashComposeVersion": "v2"
},
"ghcr.io/devcontainers/features/github-cli:1": {
"version": "latest"
},
"ghcr.io/devcontainers/features/terraform:1": {},
"ghcr.io/devcontainers/features/kubernetes-helm:1": {}
}
}常用 Features 仓库:https://github.com/devcontainers/features
当预构建的基础镜像无法满足需求时,你需要编写自定义 Dockerfile。常见的场景包括:
- 需要安装特定版本的系统级依赖(如特定版本的 OpenSSL、libcurl 等)
- 需要配置特殊的环境变量或系统服务
- 需要安装不在 Features 中的专有工具
- 需要对系统进行深度定制(如修改内核参数、安装驱动等)
# .devcontainer/Dockerfile
FROM mcr.microsoft.com/devcontainers/javascript-node:20
# 安装系统依赖
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
postgresql-client \
redis-tools \
imagemagick \
ffmpeg \
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
# 安装全局 npm 包
RUN npm install -g \
pnpm \
turbo \
prisma \
@nestjs/cli
# 安装 Rust 工具链(用于某些 Node.js 原生模块编译)
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# 配置 zsh
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" \
&& git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \
&& git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# 切换回非 root 用户
USER vscode{
"name": "自定义开发环境",
"build": {
"dockerfile": "Dockerfile",
"context": ".",
"args": {
"NODE_VERSION": "20"
}
},
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
}
}对于复杂的项目,可以使用多阶段构建来优化镜像大小:
# .devcontainer/Dockerfile
FROM mcr.microsoft.com/devcontainers/base:debian-12 AS base
# 阶段一:安装编译工具
FROM base AS build-tools
RUN apt-get update && apt-get -y install build-essential cmake ninja-build
# 阶段二:最终镜像
FROM base
COPY --from=build-tools /usr/bin/cmake /usr/bin/cmake
COPY --from=build-tools /usr/bin/ninja /usr/bin/ninja
# 安装项目特定依赖
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
libssl-dev \
libsqlite3-dev \
libcurl4-openssl-dev \
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*对于需要多个服务(如数据库、缓存、消息队列)的项目,可以使用 Docker Compose:
# .devcontainer/docker-compose.yml
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
volumes:
- ..:/workspace:cached
command: sleep infinity
network_mode: service:db
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: myapp
volumes:
- postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7-alpine
restart: unless-stopped
ports:
- "6379:6379"
volumes:
postgres-data:对应的 devcontainer.json:
{
"name": "全栈开发环境",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspace",
"forwardPorts": [3000, 5432, 6379],
"postCreateCommand": "npm install && npm run db:migrate",
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.vscode-json",
"mtxr.sqltools",
"mtxr.sqltools-driver-pg"
]
}
}
}Codespaces 的端口转发功能让你可以访问运行在远程容器中的服务。当容器内的应用监听某个端口时,Codespaces 会自动将该端口映射到一个可通过浏览器访问的 URL。
端口转发有三种可见性级别:
| 可见性 | 说明 | 访问方式 |
|---|---|---|
| private | 仅创建者可访问 | 需要 GitHub 登录 |
| org | 同一组织成员可访问 | 需要 GitHub 登录 |
| public | 任何人可访问 | 无需登录 |
当 Codespaces 检测到容器内有服务开始监听某个端口时,会自动转发该端口。你可以在终端中看到类似以下的提示:
Forwarding port 3000 to public URL https://your-codespace-name-3000.app.github.dev
{
"forwardPorts": [3000, 5432, 8080],
"portsAttributes": {
"3000": {
"label": "前端开发服务器",
"onAutoForward": "openBrowser",
"visibility": "public"
},
"5432": {
"label": "PostgreSQL",
"onAutoForward": "notify",
"visibility": "private"
},
"8080": {
"label": "API 服务器",
"onAutoForward": "silent",
"visibility": "org"
}
},
"otherPortsAttributes": {
"onAutoForward": "silent",
"visibility": "private"
}
}Codespaces 提供了内置的 Web 预览功能,可以在 IDE 旁边的面板中直接查看 Web 应用的运行效果,无需打开新的浏览器标签页。
使用方式:
- 右键点击某个端口 → Preview in Editor
- 或者使用命令面板:
Ports: Preview in Editor - 预览面板会出现在编辑器右侧,可以调整大小
所有端口转发的 URL 都自动支持 HTTPS,格式为:
https://<codespace-name>-<port>.app.github.dev
这对于需要 HTTPS 的开发场景(如 Service Workers、Web Crypto API、OAuth 回调等)非常有用,无需额外配置 SSL 证书。
当你在浏览器中打开 Codespace 时,使用的是 VS Code Web 版(基于 vscode.dev 的架构)。它支持几乎所有桌面版 VS Code 的功能,包括:
- 完整的 IntelliSense(代码补全、类型检查、跳转定义)
- 集成终端(完整的 Linux shell 环境)
- 调试器(支持 Node.js、Python、Go 等语言的远程调试)
- Git 集成(源代码管理面板、提交、推送、拉取)
- 扩展市场(大部分扩展都兼容 Web 版)
安装 GitHub Codespaces 扩展后,你可以在桌面版 VS Code 中连接到远程 Codespace:
- 打开 VS Code
- 点击左下角的远程连接图标(或按
Ctrl+Shift+P输入Codespaces) - 选择 Codespaces: Connect to Codespace
- 从列表中选择要连接的 Codespace
桌面版的优势在于更好的性能、本地文件系统访问以及更多扩展支持。
Codespaces 自动与 VS Code 的 Settings Sync 功能集成。你在本地 VS Code 中配置的主题、快捷键、代码片段和扩展都会自动同步到 Codespace 中。这意味着你不需要在每个新 Codespace 中重新配置个人偏好。
要启用 Settings Sync:
- 在 VS Code 中按
Ctrl+Shift+P - 输入
Settings Sync: Turn On - 登录 GitHub 账号
- 选择要同步的设置项
在浏览器中使用 VS Code 时,某些快捷键会被浏览器拦截(如 Ctrl+W 会关闭标签页)。Codespaces 提供了键盘快捷键映射功能:
- 按
Ctrl+Shift+P打开命令面板 - 输入
Preferences: Open Keyboard Shortcuts (JSON) - 添加自定义映射
或者直接在 Codespace 的设置中启用 Codespaces: Keyboard Layout 选项。
除了 VS Code,GitHub Codespaces 还支持 JetBrains 系列 IDE,包括 IntelliJ IDEA、PyCharm、WebStorm、GoLand、PhpStorm 等。这通过 JetBrains Gateway(网关客户端)实现。
- 下载并安装 JetBrains Gateway
- 打开 JetBrains Gateway,选择 GitHub Codespaces 连接类型
- 登录你的 GitHub 账号
- 从列表中选择要连接的 Codespace
- 选择要使用的 JetBrains IDE(如 IntelliJ IDEA Ultimate)
- Gateway 会自动下载并配置远程 IDE 后端
- 连接完成后,你将看到熟悉的 JetBrains IDE 界面
- JetBrains IDE 的远程开发需要更大的机器配置(建议至少 4 核 16GB)
- 首次连接时,Gateway 需要在远程服务器上安装 JetBrains Backend,可能需要几分钟
- 部分需要本地文件系统的插件可能不兼容远程开发模式
- JetBrains 的免费社区版不支持远程开发功能,需要专业版许可
# 创建 Codespace
gh codespace create --repo owner/repo --branch main --machine 4-core
# 列出所有 Codespaces
gh codespace list
gh codespace list --json name,state,machine,frozenAt
# 连接到 Codespace(通过 SSH)
gh codespace ssh
# 连接到 Codespace(通过 VS Code 桌面版)
gh codespace code
# 查看 Codespace 详情
gh codespace view --codespace my-codespace
# 停止 Codespace
gh codespace stop --codespace my-codespace
# 启动 Codespace
gh codespace start --codespace my-codespace
# 删除 Codespace
gh codespace delete --codespace my-codespace
# 在 Codespace 中执行命令
gh codespace ssh --command "npm test"
# 转发端口
gh codespace ports forward 3000:3000 --codespace my-codespace
# 查看端口列表
gh codespace ports list --codespace my-codespace
# 编辑 Codespace 机器配置
gh codespace edit --codespace my-codespace --machine 8-core
# 查看 Codespace 日志
gh codespace logs --codespace my-codespace#!/bin/bash
# 停止所有运行中的 Codespaces
echo "正在停止所有运行中的 Codespaces..."
gh codespace list --json name,state -q '.[] | select(.state=="Available") | .name' | while read name; do
echo "停止: $name"
gh codespace stop --codespace "$name"
done
echo "完成!"
# 删除所有已停止超过 7 天的 Codespaces
echo "清理长期未使用的 Codespaces..."
gh codespace list --json name,frozenAt -q '.[] | select(.frozenAt != null) | .name' | while read name; do
echo "删除: $name"
gh codespace delete --codespace "$name" --force
done# 配置 SSH 别名
gh codespace ssh --config >> ~/.ssh/config
# 使用 scp 传输文件
gh codespace scp -r ./local-dir :/workspaces/repo/remote-dir
# 使用 rsync 同步文件
gh codespace ssh -- rsync -avz /workspaces/repo/ ./backup/Secrets 用于存储敏感信息,如 API 密钥、数据库密码、访问令牌等。它们以加密形式存储,不会出现在 Codespace 的环境变量日志中,也不会被提交到 Git 仓库。
通过网页界面:
- 进入仓库或组织的 Settings → Codespaces
- 在 Secrets 部分点击 New repository secret 或 New organization secret
- 输入 Secret 名称和值
- 选择可以访问该 Secret 的 Codespace(可选)
通过 GitHub CLI:
# 添加仓库级别的 Secret
gh secret set API_KEY --body "your-secret-value" --repo owner/repo
# 添加组织级别的 Secret
gh secret set ORG_API_KEY --body "your-secret-value" --org my-org
# 从文件读取 Secret
gh secret set GOOGLE_CREDENTIALS --body "$(cat credentials.json)" --repo owner/repo
# 列出所有 Secrets
gh secret list --repo owner/repo
# 删除 Secret
gh secret delete OLD_API_KEY --repo owner/repoSecrets 会自动注入为环境变量:
# 在终端中使用
echo $API_KEY
# 在 Node.js 中使用
console.log(process.env.API_KEY);
# 在 Python 中使用
import os
api_key = os.environ.get('API_KEY')
# 在 .env 文件中引用(不推荐将 Secret 写入文件)
# 建议直接使用环境变量- 使用有意义的命名,如
STRIPE_SECRET_KEY而非KEY1 - 为不同环境(开发、测试、生产)使用不同的 Secret
- 定期轮换 Secret
- 使用组织级别的 Secret 实现跨仓库共享
- 不要在
postCreateCommand等命令中打印 Secret
组织管理员可以在组织设置中配置 Codespaces 的使用策略:
- 进入组织 Settings → Codespaces
- 配置以下策略:
- 权限策略: 谁可以创建 Codespaces
- 机器类型限制: 允许使用的最大机器配置
- 区域限制: 允许使用的 Azure 区域
- 超时策略: 强制的最大空闲超时时间
- 保留策略: Codespace 的最大保留天数
组织可以设置 Codespaces 的支出上限:
- 进入组织 Settings → Billing and plans
- 在 Codespaces 部分设置月度支出上限
- 配置当达到上限时的行为(通知、阻止创建新 Codespace)
通过在仓库中提交 devcontainer.json,确保团队所有成员使用相同的开发环境:
.github/
└── devcontainer/
├── devcontainer.json # 主配置
├── Dockerfile # 自定义镜像
├── docker-compose.yml # 多服务配置
├── setup.sh # 初始化脚本
└── README.md # 环境说明文档
Prebuilds 是 GitHub 提供的一种加速 Codespace 启动的机制。它会预先构建开发容器镜像并缓存,当用户创建 Codespace 时,直接使用缓存的镜像,从而将启动时间从几分钟缩短到几秒钟。
- 进入仓库 Settings → Codespaces → Prebuilds
- 点击 New prebuild configuration
- 配置以下选项:
- 分支: 选择要预构建的分支(通常是 main)
- 区域: 选择预构建的地理区域
- 机器类型: 选择预构建使用的机器配置
- 触发事件: 选择何时触发预构建(push、schedule 等)
{
"image": "mcr.microsoft.com/devcontainers/javascript-node:20",
"onCreateCommand": "npm install -g pnpm turbo",
"postCreateCommand": "pnpm install && pnpm build",
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
}
}Prebuilds 本身不额外收费,但会消耗存储空间(用于缓存镜像)。建议只为常用的分支配置 Prebuilds,避免不必要的存储开销。
Prebuilds 实际上使用 GitHub Actions 来构建容器镜像。你需要确保仓库有足够的 Actions 分钟数来支持 Prebuilds。如果你的仓库是公开的,Actions 分钟数不受限制;如果是私有仓库,则需要根据计划获得相应的分钟数。
选择合适的机器配置:
- 日常编码使用 2 核即可
- 需要编译构建时临时升级到 4 核或 8 核
- 完成后及时降级回 2 核
合理设置超时时间:
{
"settings": {
"codespaces.prebuildRetentionPeriodDays": 7,
"codespaces.idleTimeout": 30,
"codespaces.defaultIdleTimeout": 60
}
}使用定时停止:
# 设置 2 小时后自动停止
gh codespace edit --codespace my-codespace --idle-timeout 120- 进入 Settings → Billing and plans → Codespaces
- 查看当月已使用的核心小时数
- 设置支出上限告警
# 查看当前计费周期的使用量
gh api /user/settings/billing/codespacesCodespace 在空闲超时后会自动停止(freeze),停止后的 Codespace:
- 不消耗核心小时(计算费用)
- 仍然消耗存储空间($0.07/GB/月)
- 最多保留 30 天(Free 计划)或 90 天(付费计划)
- 使用 Prebuilds: 减少每次创建时的构建时间,间接节省核心小时
- 按需创建: 不要长期保留不使用的 Codespace
- 批量操作: 使用 CLI 脚本批量停止或删除 Codespace
- 合理使用分支: 为不同的开发任务创建不同的 Codespace,完成后及时删除
- 利用免费额度: 合理规划使用时间,充分利用每月的免费核心小时
GitHub Copilot 在 Codespaces 中默认可用(需要 Copilot 订阅)。启用步骤:
- 确保你的 GitHub 账号已订阅 Copilot(个人版 $10/月,商业版 $19/用户/月)
- 创建 Codespace 后,Copilot 扩展会自动安装并激活
- 在编辑器中开始编写代码,Copilot 会自动提供建议
Copilot Chat 是 AI 对话功能,可以直接在 Codespace 中使用:
- 按
Ctrl+Shift+I打开 Copilot Chat 面板 - 输入你的问题或需求
- Copilot 会基于你的代码上下文提供回答
常用命令:
/explain- 解释选中的代码/fix- 修复代码中的问题/test- 为代码生成测试/doc- 为代码生成文档
在 Codespaces 中使用 Copilot 的独特优势:
- 上下文感知更强: Copilot 可以访问整个项目代码,而不仅仅是当前打开的文件
- 终端集成: 可以在终端中使用 Copilot 生成 shell 命令
- PR 描述生成: 结合 GitHub CLI,Copilot 可以自动生成 PR 描述和提交信息
由于 Codespaces 的服务器位于海外(主要是美国和欧洲的 Azure 数据中心),中国开发者可能会遇到以下问题:
- 创建 Codespace 时镜像拉取缓慢
- 终端操作延迟较高
- 文件同步速度慢
- 端口转发的 Web 预览加载缓慢
使用代理:
在 devcontainer.json 中配置代理:
{
"containerEnv": {
"HTTP_PROXY": "http://your-proxy:port",
"HTTPS_PROXY": "http://your-proxy:port",
"NO_PROXY": "localhost,127.0.0.1"
}
}使用国内镜像源:
{
"postCreateCommand": "npm config set registry https://registry.npmmirror.com && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple"
}Dockerfile 中使用国内镜像:
FROM mcr.microsoft.com/devcontainers/javascript-node:20
# 使用清华 npm 镜像
RUN npm config set registry https://registry.npmmirror.com
# 使用阿里云 Maven 镜像(Java 项目)
RUN mkdir -p ~/.m2 && echo '<settings><mirrors><mirror><id>aliyun</id><url>https://maven.aliyun.com/repository/public</url><mirrorOf>central</mirrorOf></mirror></mirrors></settings>' > ~/.m2/settings.xml创建 Codespace 时可以选择最接近的区域:
- East US(美东): 默认区域,对中国相对较好
- West Europe(西欧): 延迟稍高,但某些情况下更稳定
- Southeast Asia(东南亚): 物理距离最近,但不一定可用
对于网络条件较差的情况,建议:
- 使用 Codespaces 完成环境配置和依赖安装
- 使用 VS Code 桌面版的 Remote - SSH 功能连接到 Codespace
- 利用 Settings Sync 保持本地和远程环境一致
- 对于大型文件操作,使用 GitHub CLI 的
codespace scp命令
项目结构:
my-fullstack-app/
├── .devcontainer/
│ ├── devcontainer.json
│ ├── docker-compose.yml
│ └── Dockerfile
├── frontend/
│ ├── package.json
│ └── src/
├── backend/
│ ├── package.json
│ └── src/
└── docker-compose.yml
devcontainer.json 配置:
{
"name": "全栈开发环境",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspace",
"forwardPorts": [3000, 5432, 8080],
"portsAttributes": {
"3000": { "label": "前端" },
"8080": { "label": "后端 API" }
},
"postCreateCommand": "cd frontend && npm install && cd ../backend && npm install",
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"ms-vscode.vscode-typescript-next"
]
}
}
}devcontainer.json 配置:
{
"name": "数据科学环境",
"image": "mcr.microsoft.com/devcontainers/python:3.12",
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/node:1": {}
},
"postCreateCommand": "pip install -r requirements.txt && jupyter notebook --generate-config",
"forwardPorts": [8888],
"portsAttributes": {
"8888": { "label": "Jupyter Notebook" }
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-toolsai.jupyter",
"ms-python.vscode-pylance"
],
"settings": {
"python.defaultInterpreterPath": "/usr/local/bin/python"
}
}
}
}为开源项目贡献代码时,Codespaces 是最便捷的方式:
# 1. Fork 仓库后创建 Codespace
gh codespace create --repo your-fork/repo-name
# 2. 在 Codespace 中创建功能分支
gh codespace ssh --command "git checkout -b feature/my-feature"
# 3. 进行开发和测试
gh codespace ssh --command "npm test"
# 4. 提交并推送
gh codespace ssh --command "git add . && git commit -m 'feat: add new feature' && git push origin feature/my-feature"
# 5. 创建 Pull Request
gh codespace ssh --command "gh pr create --title 'feat: add new feature' --body 'Description of changes'"Codespaces 非常适合编程教学和培训:
{
"name": "编程入门课程",
"image": "mcr.microsoft.com/devcontainers/universal:2",
"postCreateCommand": "echo '欢迎来到编程课程!' && python --version && node --version",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"dbaeumer.vscode-eslint",
"formulahendry.code-runner"
],
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
}
}
}
}教师可以将课程材料和练习代码放在仓库中,学生只需点击一个按钮即可获得完整的学习环境,无需花费时间配置本地开发环境。
在 Codespaces 中配置 GPG 签名可以确保你的提交是经过身份验证的。首先需要在 Codespace 中生成或导入 GPG 密钥:
# 检查是否已有 GPG 密钥
gpg --list-secret-keys --keyid-format=long
# 如果没有密钥,生成一个新的
gpg --full-generate-key
# 获取密钥 ID
gpg --list-secret-keys --keyid-format=long
# 输出示例:sec rsa4096/ABC123DEF456 2024-01-01 [SC]
# 配置 Git 使用该密钥
git config --global user.signingkey ABC123DEF456
git config --global commit.gpgsign true
# 导出公钥,添加到 GitHub 账号设置中
gpg --armor --export ABC123DEF456将导出的公钥添加到 GitHub 的 Settings → SSH and GPG keys → New GPG key 中,之后在 Codespace 中的所有提交都会自动签名。
在一个 Codespace 中同时处理多个相关仓库:
{
"name": "多仓库工作区",
"image": "mcr.microsoft.com/devcontainers/base:debian-12",
"postCreateCommand": "git clone https://github.com/company/shared-lib.git /workspaces/shared-lib && git clone https://github.com/company/utils.git /workspaces/utils",
"customizations": {
"vscode": {
"folders": [
{ "path": "/workspaces/main-project" },
{ "path": "/workspaces/shared-lib" },
{ "path": "/workspaces/utils" }
]
}
}
}在 Codespace 中连接远程数据库或使用本地数据库:
{
"features": {
"ghcr.io/devcontainers/features/postgres:1": {
"version": "16"
}
},
"postCreateCommand": "sudo service postgresql start && psql -c \"CREATE USER devuser WITH PASSWORD 'devpass';\" && psql -c \"CREATE DATABASE myapp OWNER devuser;\"",
"customizations": {
"vscode": {
"extensions": [
"mtxr.sqltools",
"mtxr.sqltools-driver-pg",
"cweijan.vscode-postgresql-client2"
]
}
}
}Codespaces 非常适合用于代码审查,你可以在隔离的环境中测试他人的代码变更:
- 打开 PR 页面
- 点击 "Open in Codespace" 按钮(如果有 Prebuild 配置,会快速启动)
- 在 Codespace 中运行测试、构建项目、验证功能
- 审查完成后直接在 Codespace 中提交评审意见
在 Codespace 中管理环境变量的最佳实践:
# 在 Codespace 中创建 .env 文件(不要提交到仓库)
cp .env.example .env
# 编辑环境变量
vim .env
# 确保 .env 在 .gitignore 中
echo ".env" >> .gitignore对于敏感信息,强烈建议使用 Codespaces Secrets 而不是 .env 文件:
# 通过 CLI 设置 Secrets
gh secret set DATABASE_URL --body "postgresql://user:pass@host:5432/db" --repo owner/repo
# 在 Codespace 中使用
echo $DATABASE_URL监控 Codespace 的资源使用情况:
# 查看 CPU 和内存使用
htop
# 查看磁盘使用
df -h
# 查看网络连接
ss -tuln
# 查看进程
ps aux
# 清理不必要的文件释放空间
sudo apt-get clean
rm -rf ~/.cache/pip
rm -rf ~/.npm/_cacache
docker system prune -f # 如果使用了 Docker虽然 Codespaces 依赖网络连接,但你可以采取一些措施来应对网络不稳定的情况:
# 预先缓存依赖
npm install # 安装后 node_modules 会被缓存
pip install -r requirements.txt # pip 包会被缓存
# 使用 Git 的离线模式
git config --global transfer.fsckObjects true
git config --global fetch.prune true
# 定期提交本地更改
git add . && git commit -m "WIP: local changes"配置个性化的 Shell 环境,提升开发效率:
{
"postCreateCommand": "sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\" && git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "/bin/zsh"
}
}
}
}
}
}在 Codespace 的终端中直接使用 Copilot 生成命令:
# 在终端中按 Ctrl+I 唤起 Copilot
# 输入自然语言描述,Copilot 会生成对应的命令
# 示例:
# "列出所有大于 100MB 的文件"
# Copilot 会生成:find . -type f -size +100M -exec ls -lh {} \;虽然 Codespace 会自动保存状态,但手动创建快照是更好的实践:
# 创建 Git stash 保存当前工作状态
git stash save "WIP: feature-x implementation"
# 查看所有 stash
git stash list
# 恢复 stash
git stash pop
# 创建备份分支
git checkout -b backup/2024-01-15
git push origin backup/2024-01-15
git checkout mainGitHub Codespaces 是完整的云端开发环境,提供虚拟机级别的隔离和完整的 Linux 环境。而 GitHub Dev Environment(通过 github.dev 访问)是一个轻量级的基于浏览器的代码编辑器,它直接在浏览器中运行 VS Code,没有后端虚拟机,适合快速浏览和轻量编辑。
Codespace 的数据存储在 Microsoft Azure 的云基础设施上,使用加密存储。每个 Codespace 运行在独立的虚拟机中,与其他用户的 Codespace 完全隔离。但是,建议不要在 Codespace 中存储高度敏感的数据,并使用 Secrets 管理敏感信息。
当多个协作者同时修改同一个 Codespace 时,可能会遇到 Git 冲突。解决方法是:
# 查看冲突文件
git status
# 解决冲突后提交
git add .
git commit -m "resolve: merge conflict"目前 GitHub Codespaces 不支持 GPU 加速。如果你需要 GPU 计算(如机器学习训练),建议使用 Google Colab、AWS SageMaker 或其他支持 GPU 的云服务。
{
"postCreateCommand": "echo '//npm.pkg.github.com/:_authToken=${NPM_TOKEN}' > ~/.npmrc",
"containerEnv": {
"NPM_TOKEN": "${localEnv:NPM_TOKEN}"
}
}或者使用 Codespaces Secrets 存储 NPM_TOKEN。
# 查看磁盘使用详情
du -sh /* | sort -rh | head -20
# 清理 apt 缓存
sudo apt-get clean
sudo apt-get autoremove
# 清理 npm 缓存
npm cache clean --force
# 清理 pip 缓存
pip cache purge
# 清理 Docker(如果使用)
docker system prune -a -f
# 删除旧的日志文件
sudo journalctl --vacuum-time=7d在 devcontainer.json 中使用 postStartCommand:
{
"postStartCommand": "npm run dev &",
"forwardPorts": [3000],
"portsAttributes": {
"3000": {
"label": "Development Server",
"onAutoForward": "openBrowser"
}
}
}{
"postCreateCommand": "sudo cp /path/to/custom-ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates",
"containerEnv": {
"NODE_EXTRA_CA_CERTS": "/usr/local/share/ca-certificates/custom-ca.crt"
}
}Codespace 在停止后会保留一定时间。免费计划保留 30 天,付费计划保留 90 天。超过保留期后,Codespace 会被自动删除。运行中的 Codespace 没有时间限制,但会持续产生费用。
Codespaces 支持 Docker,但需要在 devcontainer.json 中启用 Docker-in-Docker 功能:
{
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
}
}启用后,你可以在 Codespace 中运行 docker build、docker run 等命令,就像在本地环境中一样。
可以使用 GitHub CLI 的 scp 命令:
# 上传单个文件
gh codespace scp ./local-file.txt :/workspaces/repo/remote-file.txt
# 上传整个目录
gh codespace scp -r ./local-dir :/workspaces/repo/remote-dir
# 下载文件到本地
gh codespace scp :/workspaces/repo/remote-file.txt ./local-file.txt使用 postStartCommand 在 Codespace 启动时自动运行后台服务:
{
"postStartCommand": "npm run dev &",
"forwardPorts": [3000]
}或者使用 nohup 命令:
nohup npm run dev > /tmp/dev-server.log 2>&1 &目前 Codespaces 仅支持 Linux 操作系统(基于 Ubuntu 或 Debian)。不支持 Windows 或 macOS。但你可以在 Codespace 中使用 Wine 来运行一些 Windows 程序。
Codespaces 支持多种数据库,可以通过 Features 或 Docker Compose 来安装:
{
"features": {
"ghcr.io/devcontainers/features/postgres:1": {},
"ghcr.io/devcontainers/features/redis:1": {},
"ghcr.io/devcontainers/features/mongodb:1": {}
}
}可以通过组织设置来创建共享的 Codespace 配置。在仓库中提交 devcontainer.json 文件,确保所有团队成员使用相同的开发环境。还可以通过 Codespace Secrets 共享敏感配置。
是的,Codespaces 完全支持 Git LFS(Large File Storage)。如果你的项目使用了 Git LFS,Codespace 会自动下载 LFS 文件。对于大型文件,建议在 devcontainer.json 中配置浅克隆以加快启动速度。
VS Code 支持远程调试功能。你可以在 Codespace 中配置 launch.json,然后通过端口转发将调试端口映射到本地。对于 Node.js 应用,可以直接使用 VS Code 内置的调试器连接到运行中的进程。
不是。Codespace 的出口 IP 可能会变化。如果你的服务需要白名单 IP 访问,建议使用固定的代理服务或 VPN 解决方案。
你可以在 devcontainer.json 中配置 Docker 注册表认证。首先将 Docker 凭据存储为 Codespace Secret,然后在容器启动时进行认证。也可以使用 Azure Container Registry 等云服务来托管私有镜像。
是的,Codespaces 完全支持 WebSocket 连接。端口转发服务会自动处理 WebSocket 升级请求。这对于实时应用(如聊天应用、在线游戏、实时数据推送等)非常重要。
GitHub Copilot 在 Codespace 中默认可用,无需额外配置。确保你的 GitHub 账号已订阅 Copilot 计划即可。在编辑器中编写代码时,Copilot 会自动提供建议。你还可以使用 Copilot Chat 进行对话式编程。
建议定期将重要数据推送到远程仓库。对于数据库等有状态服务,可以配置定期备份脚本。Codespace 停止后数据会保留,但删除后无法恢复,因此重要数据应始终有远程备份。
GitHub Codespaces 正在快速发展,未来可能会增加以下功能:
- GPU 支持: 为机器学习和数据科学项目提供 GPU 加速
- 更多操作系统: 支持 Windows 和 macOS 开发环境
- 更好的离线支持: 减少对网络连接的依赖
- 更细粒度的权限控制: 允许更精细的访问控制
- 与更多 IDE 集成: 支持 Vim、Neovim 等编辑器
- 更低的延迟: 通过在全球更多地区部署数据中心来降低延迟
- 更好的协作功能: 实时多人编辑和调试
- 更智能的资源管理: 根据使用模式自动调整资源配置
作为开发者,关注这些发展趋势可以帮助你更好地规划开发环境策略,充分利用云端开发的优势。
| 命令 | 说明 |
|---|---|
gh codespace create |
创建新的 Codespace |
gh codespace list |
列出所有 Codespace |
gh codespace delete |
删除指定的 Codespace |
gh codespace start |
启动已停止的 Codespace |
gh codespace stop |
停止运行中的 Codespace |
gh codespace ssh |
通过 SSH 连接到 Codespace |
gh codespace code |
在 VS Code 桌面版中打开 Codespace |
gh codespace ports forward |
转发端口 |
gh codespace ports list |
列出端口转发 |
gh codespace edit |
修改 Codespace 配置 |
gh codespace logs |
查看 Codespace 日志 |
gh codespace scp |
在本地和 Codespace 之间传输文件 |
| 配置项 | 说明 | 示例 |
|---|---|---|
name |
容器名称 | "我的开发环境" |
image |
基础镜像 | "mcr.microsoft.com/devcontainers/javascript-node:20" |
build.dockerfile |
自定义 Dockerfile | "Dockerfile" |
forwardPorts |
转发端口 | [3000, 8080] |
postCreateCommand |
创建后执行的命令 | "npm install" |
postStartCommand |
启动后执行的命令 | "npm run dev &" |
customizations.vscode.extensions |
VS Code 扩展 | ["dbaeumer.vscode-eslint"] |
customizations.vscode.settings |
VS Code 设置 | {"editor.formatOnSave": true} |
features |
开发容器特性 | {"ghcr.io/devcontainers/features/node:1": {}} |
containerEnv |
环境变量 | {"NODE_ENV": "development"} |
remoteUser |
远程用户 | "vscode" |
hostRequirements |
主机要求 | {"cpus": 4, "memory": "8gb"} |
| Feature | 说明 |
|---|---|
ghcr.io/devcontainers/features/node:1 |
Node.js 运行时 |
ghcr.io/devcontainers/features/python:1 |
Python 运行时 |
ghcr.io/devcontainers/features/go:1 |
Go 运行时 |
ghcr.io/devcontainers/features/rust:1 |
Rust 工具链 |
ghcr.io/devcontainers/features/java:1 |
Java 运行时 |
ghcr.io/devcontainers/features/docker-in-docker:2 |
Docker 支持 |
ghcr.io/devcontainers/features/github-cli:1 |
GitHub CLI |
ghcr.io/devcontainers/features/terraform:1 |
Terraform |
ghcr.io/devcontainers/features/kubernetes-helm:1 |
Kubernetes 和 Helm |
ghcr.io/devcontainers/features/git:1 |
Git 配置 |
| 问题 | 解决方案 |
|---|---|
| Codespace 启动慢 | 使用 Prebuilds 或选择更近的区域 |
| 端口无法访问 | 检查端口可见性设置 |
| 扩展不兼容 | 检查扩展是否支持 Web 版 VS Code |
| 磁盘空间不足 | 清理缓存和临时文件 |
| 网络连接问题 | 检查代理配置或使用国内镜像 |
| 子模块未初始化 | 运行 git submodule update --init |
| 环境变量未生效 | 重启 Codespace 或重新加载终端 |
| 依赖安装失败 | 检查网络连接或使用镜像源 |
| 终端无法输入 | 刷新页面或重新连接 |
| 代码补全不工作 | 检查语言服务器是否启动 |
| Git 操作失败 | 检查 GitHub 认证状态 |
| 构建超时 | 升级机器配置或优化构建脚本 |
| 内存不足 | 升级到更大内存的机器配置 |
| 无法推送到远程 | 检查权限和认证配置 |
| 端口冲突 | 修改应用监听端口或关闭冲突服务 |
以下是一些常见项目类型的 devcontainer.json 模板:
React + Node.js 全栈项目:
{
"name": "React 全栈项目",
"image": "mcr.microsoft.com/devcontainers/javascript-node:20",
"forwardPorts": [3000, 5173],
"postCreateCommand": "npm install",
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss"
]
}
}
}Python Django 项目:
{
"name": "Django 项目",
"image": "mcr.microsoft.com/devcontainers/python:3.12",
"forwardPorts": [8000],
"postCreateCommand": "pip install -r requirements.txt && python manage.py migrate",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance"
]
}
}
}Go 微服务项目:
{
"name": "Go 微服务",
"image": "mcr.microsoft.com/devcontainers/go:1.22",
"forwardPorts": [8080],
"postCreateCommand": "go mod download",
"customizations": {
"vscode": {
"extensions": [
"golang.go"
]
}
}
}Rust 系统编程项目:
{
"name": "Rust 项目",
"image": "mcr.microsoft.com/devcontainers/rust:1",
"forwardPorts": [8000],
"postCreateCommand": "cargo build",
"customizations": {
"vscode": {
"extensions": [
"rust-lang.rust-analyzer"
]
}
}
}GitHub Codespaces 是一个功能强大的云端开发工具,它通过将开发环境代码化,彻底解决了环境配置的痛点,大幅提升了团队协作效率。对于中国开发者来说,虽然存在一定的网络延迟问题,但通过合理的配置和优化策略,仍然可以充分利用其优势。
关键要点回顾:
- 环境即代码: 使用
devcontainer.json定义可复现的开发环境,确保团队一致性 - 灵活配置: 根据项目需求选择合适的机器配置、工具和扩展
- 成本控制: 合理设置超时时间,及时删除不使用的 Codespace,充分利用免费额度
- 团队协作: 通过组织设置和 Secrets 管理实现安全的团队开发
- 性能优化: 使用 Prebuilds 加速启动,使用国内镜像源优化下载速度
- 安全实践: 使用 GPG 签名、Secrets 管理敏感信息,注意数据安全
- 高级技巧: 多仓库工作区、数据库管理、Copilot 集成等提升开发效率
无论你是个人开发者还是团队协作,Codespaces 都能为你提供一致、高效、安全的开发环境。结合 GitHub Copilot 的 AI 辅助编程能力,Codespaces 正在重新定义现代软件开发的工作方式。
对于初学者,建议从以下步骤开始实践:
- 选择一个简单的开源仓库,创建第一个 Codespace
- 熟悉 VS Code Web 版的基本操作和终端使用
- 尝试修改
devcontainer.json,自定义开发环境 - 使用 GitHub CLI 管理你的 Codespace
- 为自己的项目创建
devcontainer.json配置 - 探索 Prebuilds、Secrets 等高级功能
通过持续的实践和探索,你将能够充分利用 Codespaces 的强大功能,提升开发效率,享受云端开发的便利。
上一篇:GitHub Packages 介绍 | 下一篇:GitHub Mobile 介绍