GitHub 代码空间
GitHub Codespaces为任何活动提供云驱动的开发环境——无论是长期项目,还是短期任务如审查拉取请求。你可以在Visual Studio Code或基于浏览器的编辑器中作这些环境。

环境
环境是 GitHub Codespace 的“后端”部分。所有与软件开发相关的计算工作都在这里进行:编译、调试、恢复等等。当你需要做一个新项目、接手新任务或审查一个PR时,你只需搭建一个云托管环境,GitHub Codespaces就能正确配置它。它会自动配置你项目所需的一切:源代码、运行时、编译器、调试器、编辑器、自定义点文件配置、相关编辑器扩展等等。
定制化
GitHub Codespaces 可以根据每个项目完全自定义。这通过包含一个devcontainer.json类似于 VS Code 开发容器的开发。
自定义示例包括:
- 设置基于Linux的作系统使用。
- 自动安装各种工具、运行时和框架。
- 转发常用端口。
- 设置环境变量。
- 配置编辑器设置和安装首选扩展。
具体代码空间的相关内容请参见配置代码空间文档devcontainer.json设定。
每个用户配置的点文件
点文件是指文件名以点(.)开头的文件。它们通常包含应用程序的配置信息,并可控制终端、编辑器、源码控制及其他各种工具的行为。.bashrc,.gitignore, 和.editorconfig是开发者常用的点文件示例。
你可以指定一个包含你的点文件、文件目标位置以及创建代码空间时的安装命令的 GitHub 仓库。
请参阅《个性化码空间》文档,了解如何将你的点文件配置添加到代码空间中。
入门
两个 GitHub Codespaces 客户端都有入门主题。这些链接将帮助你快速登录 GitHub Codespaces,创建第一个代码空间,并通过你偏好的客户端连接:
- VS Code 中的代码空间——使用 GitHub Codespaces 扩展连接并在你的环境中工作。
- 浏览器中的代码空间——通过基于浏览器的编辑器连接到你的代码空间。
扩展作者
VS Code 扩展 API 隐藏了大部分远程运行的实现细节,所以很多扩展可以在 GitHub Codespaces 环境中运行,无需修改。不过,我们建议你在代码空间中测试扩展,以确保其所有功能都能正常工作。详情请参阅支持远程开发和GitHub代码空间的文章。
基于浏览器的编辑器
你还可以在浏览器中免费、轻量级地使用Visual Studio Code。基于网页的编辑器让你可以安全快速地浏览 GitHub 的源代码仓库,并进行轻量级代码修改。你可以在编辑器中打开任何仓库、分支或拉取请求,编辑器具备许多VS Code的功能,包括搜索和语法高亮。如果你想运行或调试代码,可以切换到云托管环境或VS Code桌面。
要访问这个基于浏览器的编辑器,你可以进入 github.com 的仓库并按 .(句号键)或将仓库的 URL 更改为github.dev/org/repo,替换github.com其中github.dev.
限制:如果你运行浏览器的无痕模式或启用广告拦截器,可能无法使用基于网页的编辑器。
注:本编辑器目前处于技术预览阶段。你今天就可以试用,并在 https://github.co/browser-editor-feedback 提供反馈。
已知的局限性与适应
在使用Codespace,特别是在网页版中使用VS Code时,有一些限制需要注意。其中一些限制通过变通或适应机制,提供一致的开发体验。
对于某些问题(尤其是键盘快捷键或桌面上列出的变通方法),你可以安装并使用 Codespace 作为渐进式网页应用(PWA)。

| 子嗣 | 原因 | 变通方法 |
|---|---|---|
| Ctrl+Shift+P 在 Firefox 中无法启动命令面板。 | Ctrl+Shift+P 在 Firefox 中是保留的。 | 用F1启动指令面板。 |
| 某些默认的键盘快捷键(用于调试)在网页上是不同的。 | 由于浏览器可能已经注册了这些快捷键的动作,我们会调整网页版 VS Code 的默认设置。 | 使用调整后的默认值。它们会出现在调试作上方的提示悬停。
|
| 调试的F11在macOS网页或桌面上都不工作。 | 这是一个已知的非浏览器特定限制。更多信息可见第5102期。 | 在macOS上禁用F11以显示桌面。
|
| 在网页版中,Ctrl+N 键新文件不起作用。 | Ctrl+N 会打开一个新窗口。 | 在桌面上用 Ctrl+N 表示新文件。 |
| Ctrl+W关闭编辑器在网页版中不起作用。 | Ctrl+W 会关闭浏览器当前的标签页。 | Ctrl+W 在桌面上是可以的。 |
| Ctrl+Shift+B 不会切换浏览器中的收藏栏。 | Codespaces 覆盖了这个功能,并重定向到命令面板中的“构建”菜单。 | 目前没有任何解决办法。 |
| 从VS Code拖拽文件到Codespace(反之亦然)是不起作用的。 | 你可以在#115535期看到更多背景。 | 有几种选择:
|
| Angular应用调试在网页版中并不支持。 | 出于安全原因,浏览器中运行的代码不能以调试模式启动另一个浏览器实例。 | 你有几个选择:
|
| 从浏览器下载无扩展名的文件会自动添加“.txt” | 这就是Chrome和Edge的表现方式。 | 背景及未来可能的解决方案见#118436期。 |
| 当你从远程(包括代码空间)下载文件时,诸如可执行位等属性会被移除。 | 相关背景和潜在的未来解决方案可见于#112099期。 | 目前没有任何解决办法。 |
你可以看到提示,”Your_codespace_name当尝试从Codespace下载某些文件夹时,无法打开这个文件夹,因为它包含系统文件。 |
用户代理可以自由对敏感目录施加限制层级。更多信息请参见本规范和Chromium的封锁列表。 | 除了规格和黑名单外,没有其他变通办法。 |
手动访问http://localhost:forwarded_port无法访问网页中代码空间转发的端口。 |
这基于Codespaces处理端口转发并生成正确网页URL的方式。 | 点击端口转发通知中的链接打开你的应用,或者点击端口视图中的地球图标,这两个都会提供正确生成的链接。更多信息请参见Codespaces文档。 |
有些扩展在网络上的表现不同
| 扩展 | 问题 / 原因 | 变通方法 |
|---|---|---|
| 带有键盘快捷键的扩展与浏览器快捷键重叠,例如 Git Graph,它使用 Ctrl+R 来刷新。 | 键盘快捷方式可能与现有的浏览器快捷方式重叠,例如在 Safari 中按 Ctrl+R 刷新窗口。 | 你可以使用基于桌面的Codespace,而非基于网页的Codespace,充分利用你的键盘快捷键。不同浏览器的行为也可能不同(你可以在Chrome中刷新Git Graph)。 |
| 语言包,例如Visual Studio Code的日语语言包 | 目前基于网页的代码空间不支持语言包扩展。 | 你可以使用基于桌面的代码空间来使用语言包并配置显示语言。 |
| 对阵上色器2 | 它在浏览器中无法运行,因为它会引入安装位置依赖,且难以解决。 | 使用包围对上色器。 |
| 浏览器调试器,如Firefox的调试器。 | 需要UI/桌面扩展主机的扩展不会在浏览器中加载。 | 你可以在本地的VS Code中使用这些扩展(不连接Codespaces)。或者,当你的应用运行在代码空间中时,你可以使用替代工具,比如 Chrome DevTools 来检查元素并设置断点。 |
| 打开浏览器的扩展,比如在浏览器中打开。 | 需要UI/桌面扩展主机的扩展不会在浏览器中加载。 | 如果可能的话,使用替代扩展,比如Live Server。 |
| 项目经理 | 项目经理依赖于同步自定义projects.json该文件目前不支持。 |
你可以在桌面版Codespaces或本地VS Code中使用扩展名来保存和管理项目,因为这些选项不需要同步自定义文件。 |
| 依赖Chrome的扩展,如Protractor Test Runner和Browser Preview。 | Chrome 不包含在 Codespace 中。 | 试着找其他经验,或者你可以在本地VS Code(不连接Codespaces)里用这些扩展来做项目。 |
| Flutter(以及Flutter整体开发) | 由于 Docker 容器和代码空间的特性,Flutter 工作流程的多个方面受到限制。
|
你可以用本地VS Code来开发Flutter。 |
| LaTeX 工作坊 | 该扩展提供了三种功能来帮助 LaTeX 创作:1)一组显示常见命令的视图,2)PDF 预览器,3)语言功能,如摘要和 IntelliSense。该扩展功能相当完整,但存在一些网页或安全限制。 | 以下变通方法解决了视图和预览功能领域的限制:
|
| Git 图 | 部分 Git Graph 网页视图功能在 Codespaces 中可能受限。例如,在提交文件和 Git Graph 网页视图之间切换时,可能会显示该网页视图被清空。 | 你可以在VS Code桌面版中完整使用Git Graph。 |
| 其他远程开发扩展(WSL、开发容器、远程 - SSH)无法安装在代码空间中。 | 代码空间本身就是一个远程环境。 | 如果你想在其他远程环境下运行(比如 WSL 或远程 SSH 电脑),打开 VS Code 桌面(不连接 Codespace),然后启动其他远程扩展。如果你想用自定义开发容器,也可以用同样的.devcontainer无论是代码空间还是开发容器。 |
| My_Favorite_Extension不起作用,也没在上面列出。 | 还有一些其他问题可能阻碍功能在远程环境中正常工作。 | 在某些情况下,你可以用其他命令来绕过这个问题,但在其他情况下,扩展可能需要修改。查看关于常见远程问题的远程分机技巧及解决建议。 |
常见问题
为什么浏览器里不能安装扩展
有少数扩展内置假设或需要在桌面上运行。例如,当扩展访问桌面上VS Code安装的文件,或扩展依赖于必须在桌面环境中运行的可执行文件时。当你尝试在浏览器中安装此类扩展时,会被告知该扩展不可用。
请注意,当连接到桌面运行的VS Code代码空间时,这种扩展仍然可以使用。
我该如何让 VS Code 访问我的剪贴板以便阅读?
在某些情况下,VS Code可能会在阅读剪贴板时请求你访问剪贴板的权限。你应该可以通过浏览器设置(搜索“网站权限”)或在右侧地址栏中寻找这个选项来授权访问剪贴板:

一旦你授权VS Code访问剪贴板,就可以重新尝试该作。
我该如何让 VS Code 始终打开新的标签页和窗口?
有时浏览器会出于安全考虑,阻止 VS Code 打开新的标签页或窗口。如果发生这种情况,VS Code 会检测到阻断动作并明确提示用户。不过,你可以通过浏览器导航栏的右键菜单打开网站设置,并启用弹出窗口,让 VS Code 始终打开新的窗口和标签页。

我如何允许浏览器中的 VS Code 访问本地文件和文件夹?
在浏览器中打开VS Code中的本地文件和文件夹需要浏览器支持文件系统访问API。截至目前,Microsoft Edge 和 Google Chrome 都提供了这种级别的支持。如果你想在浏览器中使用 VS Code 访问本地文件和文件夹,请考虑切换到这两种浏览器中的一个。
问题或反馈
如果你有疑问,可以参考GitHub Codespaces的故障排除指南。如果你想提供反馈,可以在 GitHub Codespaces 讨论区提交议题。