在vscode中使用远程仓库

原文:Remote Repositories extension for Visual Studio Code

2021 年 6 月 10 日,作者 Brigit Murtaugh、@BrigitMurtaugh、Eric Amodio、@eamodio

我们很高兴为 Visual Studio Code展示新的远程存储库扩展!这是我们与 GitHub 的朋友合作建立的一种新体验,以便能够在 VS Code 中快速安全地使用源代码存储库。

远程存储库扩展

一种更快的开放源代码存储库的方法#

在 VS Code 中,我们从一开始就提供了对 Git 的集成支持,并且我们一直通过扩展支持许多其他源代码控制管理 (SCM) 提供程序。这允许开发人员直接在 VS Code 中克隆和使用存储库。

然而,开发人员每天所做的大部分工作都涉及阅读其他人的代码:审查拉取请求、浏览开源存储库、试验新技术或项目、检查上游依赖以调试应用程序等。所有这些都有共同点是第一步,您通常在本地克隆存储库,然后在您喜欢的代码编辑器中打开代码。然而,克隆存储库需要时间,如果您忘记拉取,可能会导致您查看过时的存储库版本,并且如果您不熟悉代码,有时可能会带来安全风险。

GitHub 发布的新远程存储库扩展使在 VS Code 中打开源代码存储库的体验即时且安全。有了这个,你可以直接从 VS Code 中快速浏览、搜索、编辑和提交到任何远程 GitHub 存储库(或者,Azure Repos),无需克隆!

您可以根据需要处理任意数量的存储库,而无需在您的机器上保存任何源代码。远程存储库可为您节省时间和本地磁盘空间,并使您能够完全在 VS Code 中完成所有源代码控制任务。

在这篇博文中,我们将探讨开始使用远程存储库是多么容易、打开第一个远程存储库后您可以做什么、支持此虚拟环境的技术细节以及您今天如何向我们提供反馈。

在 VS Code 中打开你的第一个远程仓库#

让我们在 VS Code 中打开一个远程仓库。首先,确保您已安装远程存储库扩展。

目前,远程存储库支持 GitHub 存储库,即将支持 Azure 存储库。在这篇博文中,我们将首先打开 VS Code 存储库(microsoft/vscode)

安装远程存储库扩展后,我们可以通过单击 VS Code 左下角的远程指示器(以及来自您已安装的任何其他远程开发扩展的命令)立即访问其打开远程存储库命令:

VS Code 中的远程指示器

如果您之前没有从 VS Code 登录到 GitHub,系统会提示您验证您的 GitHub 帐户。登录后,搜索一个 repo 或 PR,选择你想要的,然后你就可以开始了。

在下面的短视频中,我们搜索并选择 VS Code 存储库,VS Code 重新加载,存储库的内容就像我们在本地克隆它一样加载:

使用 Open Remote Repository 命令的 Gif,搜索“microsoft/vscode”,repo 加载,打开自述文件

您无需离开 VS Code,就可以探索和贡献代码库。您感觉自己正在使用熟悉的 VS Code 界面处理本地代码,并且可以使用 VS Code 资源管理器、搜索、时间线视图、快速打开和源代码控制等功能。

您现在已连接到所谓的虚拟工作区(以下有关于虚拟工作区的更多信息);远程指示器显示“GitHub”。当您将鼠标悬停在远程指示器上时,系统会通知您某些功能在虚拟工作区中不可用:

将鼠标悬停在远程指示器上可获得有限的虚拟工作区消息

虚拟工作区是一种特殊设置,某些功能(如扩展)被禁用或功能有限。通过单击鼠标悬停在远程指示器上时显示的某些功能链接,您可以轻松找出哪些扩展被禁用。

单击该链接会显示哪些扩展已禁用,哪些功能有限。将鼠标悬停在扩展上时可以看到有限的功能。

带有受限和禁用扩展的 VS Code 扩展视图

如果您想在虚拟工作区中手动启用扩展,您可以在用户settings.json文件中的设置extensions.supportVirtualWorkspaces

    "extensions.supportVirtualWorkspaces": { "<extensionID>": true }

请记住,在无法访问本地文件系统的情况下,扩展可能无法处理虚拟工作区,因此扩展可能无法按预期工作。

你打开了一个 repo,下一步是什么?#

打开您的存储库后,远程存储库可以轻松地为您的项目做出贡献。

简化的 Git 工作流程,使您的项目保持最新#

远程存储库可帮助您每次都使用最新版本的存储库,无需任何复杂的 Git 命令。

任何时候你打开一个新的 repo,你都会打开最新版本。每当远程存储库检测到来自 GitHub 的新更改时,它都会在状态栏中列出您需要下拉的提交数量:

VS Code 状态栏在远程指示器中显示“GitHub”和 1 个待定更改

并在资源管理器中突出显示修改后的文件:

VS Code Explorer 列出文件和 README 有 1 个更改

当您提交更改时,它们会自动显示在 GitHub 上——您无需推送更改或发布您创建的任何新分支。

创建或检查拉取请求#

远程存储库与GitHub Pull Requests and Issues 扩展配合得很好,它允许您直接在 VS Code 中查看和管理来自 GitHub 的拉取请求和问题。并行使用这两个扩展来快速检查 PR 并处理问题,而无需在本地克隆代码或离开 VS Code。

您可以对代码进行更改,基于该更改创建新分支和拉取请求 (PR),然后查看 PR,只需单击几下即可。

使用 GitHub Pull Request 扩展创建分支和 PR 的 Gif,并查看那个 PR

您可以在我们的使用 GitHub文章中了解有关 GitHub 拉取请求和问题扩展的更多信息。

保持对分支的更改隔离#

完成工作后,您可能需要在分支之间切换。在典型的环境中,当您需要决定要存储或提交哪些更改时,这会变得棘手。

远程存储库让您可以轻松地同时在不同的分支上工作。当您在一个分支上暂停工作并切换到一个新分支时,您不会被询问是否存储更改 - 它们将自动保留在前一个分支上。当您返回上一个分支时,您所做的更改仍然存在,您可以从上次中断的地方继续。

让我们探索如何将更改推送到分支。

在状态栏中,选择您当前的分支以打开分支列表,例如“main”:

主分支上的 VS Code 状态栏

选择**+ Create New Branch…**并为您的分支输入一个名称:

带有创建新分支选项的 VS Code 命令面板

然后你可以切换到那个新分支:

远程仓库提示切换到新分支

新分支将不包括您之前分支的任何更改。

限制#

使用远程存储库时存在某些限制:

  • 调试、终端和任务 - 当前不支持。终端在您的本地文件系统上打开,并且无权访问远程存储库的虚拟文件系统。
  • 有限的语言智能 - IntelliSense 和Go to Definition 等功能可能会受到影响,因为许多语言尚不了解远程存储库的虚拟化环境。
  • 搜索 - GitHub 搜索本身有局限性,例如不能索引分支。远程存储库可以通过启用索引来避免此限制并执行全文搜索。索引从 GitHub 中提取存储库的浅层克隆并在本地执行完整搜索,提供比 GitHub 的模糊默认分支本地搜索更强大的功能。您可以从“搜索”视图中启用远程存储库中的索引。
  • 扩展限制 - 并非所有扩展都支持在虚拟工作区中运行,但随着时间的推移会有更多扩展支持它。严重依赖访问本地文件的扩展不能支持这种设置。有关更多详细信息,请参阅下面的虚拟工作区部分。

我们才刚刚开始这一旅程,因此随着我们的继续开发,功能集会增加,限制会减少。

继续在更强大的环境中工作#

使用远程存储库,VS Code 在并非所有功能都可用的环境中运行,因为没有物理文件系统。这对于快速开始浏览存储库非常有用,但是当您准备好进行一些更“高级”的工作时呢,例如:

  • 您想积极地存储库上工作并获得 VS Code 的全部功能。
  • 您需要通过定期从远程拉取来主动跟踪存储库的更改。

为了转移到更高级的工作流程,远程存储库为您提供了一种“升级”环境并在那里继续工作的方法,从您当前所在的任何地方开始。

单击左下方的远程指示器,然后选择Continue Working on…

带有“继续工作...”命令的 VS Code 命令面板

您将看到三个选项:

  • 本地克隆存储库:将当前存储库克隆到本地计算机。将弹出一个本地文件浏览器,允许您在磁盘上选择一个位置来克隆远程存储库。
  • Clone Repository in Container Volume:使用 Remote – Containers 扩展(您需要Remote – Containers扩展和 Docker 安装)在 Docker容器卷中克隆当前 repo 。VS Code 将使用 Remote – Containers 重新加载和连接,并且远程指示器现在将读取Dev Container: {image name}
  • 在代码空间中打开:在GitHub 代码空间中继续您的工作。当您选择此选项时,浏览器将打开并将您定向到此存储库的代码空间列表。

VS Code 命令调色板,带有在本地、卷或代码空间中继续的选项

既然我们已经探索了如何在 VS Code 中使用远程存储库,我们想描述一些支持体验的技术细节,以及如何确保您的扩展在远程存储库会话中工作。

虚拟文件系统和工作区#

支持这种远程工作的核心概念是虚拟文件系统和虚拟工作区。

作为最终用户,您只需要知道您想要处理哪个 repo 或 PR – VS Code 将负责虚拟文件系统并为您管理您的工作区。作为扩展开发人员,您需要采用虚拟文件系统 API 来确保您的扩展按预期运行。

虚拟文件系统如何工作#

当您在传统的 git 工作流程中工作时,您“git clone”了一个存储库,并将副本保存到您计算机的本地文件系统中。但是当使用远程存储库时,代码并不存在于您的本地计算机上;它仍然只是在 GitHub 上。

您通过虚拟文件系统处理代码,该系统是对物理存在于磁盘上的文件的抽象。虚拟文件系统可以提供来自 GitHub 等代码主机、云存储或数据库的内容,并在 VS Code 中将这些作为文件无缝提供给用户。

当您在虚拟文件系统上打开工作区时,它被称为虚拟工作区。在虚拟工作区中工作时,您仍然可以访问 VS Code 功能,包括扩展。

确保您的扩展程序在虚拟工作区中工作#

要使扩展正常运行,它们必须支持虚拟文件系统。

当扩展没有代码但是是纯颜色主题、键绑定、片段或语法扩展时,它可以在虚拟工作区中运行,不需要采用。

运行实际代码的扩展,这意味着它定义了一个主要入口点,需要检查和可能采用。

对虚拟文件系统的API 支持是通过FileSystemProvider接口实现的。为新的 URI 方案(例如vscode-vfs)注册文件系统提供程序,并且该文件系统上的资源将由使用该方案的 URI 表示(vscode-vfs://github/microsoft/vscode/package.json)。

有一个capabilities在扩展的特性package.json,以及virtualWorkspaces延长是否与虚拟工作区或工作不子属性是用来信号。

您可以在虚拟工作区扩展作者指南 中了解有关虚拟文件系统、工作区以及如何为扩展实现它们的更多信息。

反馈和进一步阅读#

我们很高兴您尝试远程存储库,并且迫不及待地等待您的反馈。

请安装远程存储库扩展。您可以提交任何问题或功能请求,或者将您的想法发送给我们@code

您还可以查看我们关于如何使用远程存储库扩展的新YouTube 视频

如果您是扩展作者,请查看扩展作者的虚拟工作区支持指南,并在我们的跟踪问题中分享任何问题或反馈。您还可以加入扩展作者社区Slack 组

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐