尝试以扩展 VS Code 中的代理模式!

在 VS Code 中使用 GitHub

GitHub 是一个用于存储和共享源代码的云服务。在 Visual Studio Code 中使用 GitHub,可以直接在编辑器中共享源代码并与他人协作。与 GitHub 交互的方式有很多,例如通过其网站 https://github.comGit 命令行界面 (CLI),但在 VS Code 中,丰富的 GitHub 集成是由 GitHub Pull Requests and Issues 扩展提供的。

安装 GitHub Pull Requests and Issues 扩展

要在 VS Code 中开始使用 GitHub,你需要安装 Git创建一个 GitHub 账户并安装 GitHub Pull Requests and Issues 扩展。在本主题中,我们将演示如何在不离开 VS Code 的情况下使用你最喜欢的 GitHub 功能。

如果你是源代码管理的新手,或者想了解更多关于 VS Code 基本 Git 支持的信息,可以从源代码管理主题开始。

开始使用 GitHub 拉取请求和议题

安装 GitHub Pull Requests and Issues 扩展后,你需要登录。按照提示在浏览器中通过 GitHub 进行身份验证,然后返回 VS Code。

Extension Sign In

如果你没有被重定向到 VS Code,可以手动添加你的授权令牌。在浏览器窗口中,你将收到你的授权令牌。复制该令牌,然后切换回 VS Code。在状态栏中选择 Signing in to github.com...,粘贴令牌,然后按 Enter

设置仓库

克隆仓库

你可以使用命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中的 Git: Clone 命令,或者通过源代码管理视图中的 Clone Repository 按钮(当你没有打开任何文件夹时可用)来搜索并克隆 GitHub 上的仓库。

Clone Repository button in the Source Control view

在 GitHub 仓库下拉菜单中,你可以筛选并选择要本地克隆的仓库。

GitHub repository dropdown filtered on microsoft/vscode

使用现有仓库进行身份验证

当你在 VS Code 中运行任何需要 GitHub 身份验证的 Git 操作时,例如推送到你是成员的仓库或克隆私有仓库,就会启用通过 GitHub 的身份验证。你不需要安装任何特殊的扩展来进行身份验证;它内置于 VS Code 中,以便你可以高效地管理你的仓库。

当你执行需要 GitHub 身份验证的操作时,你会看到一个登录提示

Authentication Prompt

按照步骤登录 GitHub 并返回 VS Code。使用个人访问令牌 (PAT) 登录仅支持 GitHub Enterprise Server。如果你正在使用 GitHub Enterprise Server 并希望使用 PAT,那么你可以点击“取消”登录提示,直到系统提示你输入 PAT。

请注意,有多种方法可以向 GitHub 进行身份验证,包括使用你的用户名和密码进行双因素身份验证 (2FA)、个人访问令牌或 SSH 密钥。有关更多信息和每个选项的详细信息,请参阅关于向 GitHub 进行身份验证

注意:如果你想在不将内容克隆到本地计算机的情况下处理仓库,可以安装 GitHub Repositories 扩展,直接在 GitHub 上浏览和编辑。你可以在下文的GitHub Repositories 扩展部分了解更多信息。

编辑器集成

悬停信息

当你打开一个仓库并且有用户被 @-提及 时,你可以将鼠标悬停在该用户名上,看到一个 GitHub 风格的悬停提示。

User Hover

对于 #-提及 的议题编号、完整的 GitHub 议题 URL 以及指定仓库的议题,也有类似的悬停提示。

Issue Hover

建议

用户建议由“@”字符触发,议题建议由“#”字符触发。建议在编辑器和源代码管理视图的输入框中可用。

User and Issue suggestions

建议中出现的议题可以通过 GitHub Issues: Queries (githubIssues.queries) 设置进行配置。查询使用GitHub 搜索语法

你还可以使用 GitHub Issues: Ignore Completion Trigger (githubIssues.ignoreCompletionTrigger) 和 GitHub Issues: Ignore User Completion Trigger (githubIssues.ignoreUserCompletionTrigger) 设置来配置哪些文件显示这些建议。这些设置接受一个语言标识符数组来指定文件类型。

// Languages that the '#' character should not be used to trigger issue completion suggestions.
"githubIssues.ignoreCompletionTrigger": [
  "python"
]

拉取请求

拉取请求视图中,你可以查看、管理和创建拉取请求。

Pull Request View

用于显示拉取请求的查询可以通过 GitHub Pull Requests: Queries (githubPullRequests.queries) 设置进行配置,并使用GitHub 搜索语法

"githubPullRequests.queries": [
    {
        "label": "Assigned To Me",
        "query": "is:open assignee:${user}"
    },

创建拉取请求

一旦你将更改提交到你的分叉或分支,就可以使用 GitHub Pull Requests: Create Pull Request 命令或拉取请求视图中的 Create Pull Request 按钮来创建拉取请求。

Create Pull Request button in the Pull Request view

将显示一个新的创建视图,你可以在其中选择你希望拉取请求目标的基础仓库和基础分支,并填写标题和描述。如果你的仓库有拉取请求模板,它将自动用于描述。

使用顶部操作栏中的按钮添加指派人审查者标签里程碑

Create Pull Request view

创建按钮菜单允许你选择其他创建选项,例如创建草稿或启用自动合并方法。

选择创建后,如果你还没有将你的分支推送到 GitHub 远程仓库,该扩展将询问你是否要发布该分支,并提供一个下拉列表来选择特定的远程仓库。

创建拉取请求视图现在进入审查模式,你可以在其中审查 PR 的详细信息、添加评论,并在准备好后合并 PR。PR 合并后,你可以选择删除远程和本地分支。

提示

使用 GitHub Copilot 根据 PR 中包含的提交来生成 PR 标题和描述。选择 PR 标题字段旁边的闪光图标以生成 PR 标题和描述。

Screenshot that shows the Generate Commit Message with Copilot button in the commit message input box.

审查

可以从拉取请求视图审查拉取请求。你可以在拉取请求的描述中指派审查者和标签、添加评论、批准、关闭和合并。

Pull Request Description editor

描述页面,你还可以使用签出按钮轻松地在本地签出拉取请求。这会切换 VS Code,在审查模式下打开拉取请求的分叉和分支(在状态栏中可见),并添加一个新的拉取请求中的更改视图,从中你可以查看当前更改的差异以及所有提交和这些提交中的更改。已添加评论的文件会用菱形图标装饰。要查看磁盘上的文件,你可以使用打开文件内联操作。

Changes in Pull Request view

此视图中的差异编辑器使用本地文件,因此文件导航、IntelliSense 和编辑都像往常一样工作。你可以在编辑器中的这些差异上添加评论。支持添加单个评论和创建整个审查。

当你审查完拉取请求的更改后,可以合并 PR 或选择退出审查模式以返回到你之前工作的分支。

提示

你也可以在创建 PR 之前让 Copilot 对 PR 进行代码审查。在 GitHub 拉取请求视图中选择代码审查按钮。

议题

创建议题

可以通过议题视图中的 + 按钮,以及使用 GitHub Issues: Create Issue from SelectionGitHub Issues: Create Issue from Clipboard 命令来创建议题。也可以通过“TODO”注释的代码操作来创建议题。创建议题时,你可以使用默认描述,或选择右上角的编辑描述铅笔图标来调出议题正文的编辑器。

Create Issue from TODO

你可以使用 GitHub Issues: Create Issue Triggers (githubIssues.createIssueTriggers) 设置来配置代码操作的触发器。

默认的议题触发器是

"githubIssues.createIssueTriggers": [
  "TODO",
  "todo",
  "BUG",
  "FIXME",
  "ISSUE",
  "HACK"
]

处理议题

议题视图中,你可以看到你的议题并处理它们。

Issue view with hover

默认情况下,当你开始处理一个议题时(Start Working on Issue 上下文菜单项),系统会为你创建一个分支,如下图状态栏所示。

Work on Issue

状态栏还显示活动议题,如果你选择该项,将提供一系列议题操作,例如在 GitHub 网站上打开议题或创建拉取请求。

Issue Status bar actions

你可以使用 GitHub Issues: Issue Branch Title (githubIssues.issueBranchTitle) 设置来配置分支的名称。如果你的工作流程不涉及创建分支,或者你希望每次都提示输入分支名称,可以通过关闭 GitHub Issues: Use Branch For Issues (githubIssues.useBranchForIssues) 设置来跳过该步骤。

当你完成议题并想要提交更改时,源代码管理视图中的提交信息输入框将填充一条消息,该消息可以通过 GitHub Issues: Working Issue Format SCM (githubIssues.workingIssueFormatScm) 进行配置。

GitHub Repositories 扩展

GitHub Repositories 扩展让你能够直接在 Visual Studio Code 中快速浏览、搜索、编辑和提交到任何远程 GitHub 仓库,而无需在本地克隆仓库。对于许多场景来说,这既快速又方便,例如你只需要审查源代码或对文件或资产进行小幅更改。

GitHub Repositories extension

打开仓库

安装 GitHub Repositories 扩展后,你可以通过命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中的 GitHub Repositories: Open Repository... 命令,或通过单击状态栏左下角的远程指示器来打开仓库。

Remote indicator in the Status bar

当你运行 Open Repository 命令时,你可以选择是从 GitHub 打开一个仓库,从 GitHub 打开一个拉取请求,还是重新打开你之前连接过的仓库。

如果你之前没有在 VS Code 中登录过 GitHub,系统会提示你使用 GitHub 帐户进行身份验证。

GitHub Repository extension open repository dropdown

你可以直接提供仓库 URL,或者通过在文本框中输入来在 GitHub 上搜索你想要的仓库。

选择仓库或拉取请求后,VS Code 窗口将重新加载,你将在文件资源管理器中看到仓库内容。然后你可以打开文件(具有完整的语法高亮和括号匹配功能)、进行编辑并提交更改,就像在本地克隆的仓库中工作一样。

与在本地仓库中工作的一个区别是,当你使用 GitHub Repository 扩展提交更改时,更改会直接推送到远程仓库,类似于你在 GitHub Web 界面中工作。

GitHub Repositories 扩展的另一个功能是,每次你打开一个仓库或分支时,你都会获得 GitHub 上可用的最新源代码。你不需要像在本地仓库中那样记得拉取以刷新。

GitHub Repositories 扩展支持查看甚至提交 LFS 跟踪的文件,而无需在本地安装 Git LFS(大文件系统)。将你希望用 LFS 跟踪的文件类型添加到 .gitattributes 文件中,然后使用源代码管理视图直接将你的更改提交到 GitHub。

切换分支

你可以通过单击状态栏中的分支指示器轻松切换分支。GitHub Repositories 扩展的一个很棒的功能是,你可以在不暂存未提交更改的情况下切换分支。该扩展会记住你的更改,并在你切换分支时重新应用它们。

Branch indicator on the Status bar

远程资源管理器

你可以通过活动栏上的远程资源管理器快速重新打开远程仓库。此视图显示了以前打开的仓库和分支。

Remote Explorer view

创建拉取请求

如果你的工作流程使用拉取请求,而不是直接提交到仓库,你可以从源代码管理视图创建一个新的 PR。系统将提示你提供标题并创建一个新分支。

Create a Pull Request button in the Source Control view

创建拉取请求后,你可以使用 GitHub Pull Request and Issues 扩展来审查、编辑和合并你的 PR,如本主题前面所述。

虚拟文件系统

在你的本地机器上没有仓库文件的情况下,GitHub Repositories 扩展会在内存中创建一个虚拟文件系统,以便你可以查看文件内容和进行编辑。使用虚拟文件系统意味着一些假定本地文件的操作和扩展未启用或功能有限。诸如任务、调试和集成终端等功能未启用,你可以通过远程指示器悬停提示中的功能不可用链接了解虚拟文件系统的支持程度。

Remote indicator hover with features are not available link

扩展作者可以在虚拟工作区扩展作者指南中了解更多关于在虚拟文件系统和工作区中运行的信息。

继续处理...

有时你会希望切换到支持本地文件系统和完整语言及开发工具的开发环境中处理仓库。GitHub Repositories 扩展使你能够轻松地:

要切换开发环境,请使用继续处理...命令,该命令可从命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 或通过单击状态栏中的远程指示器获得。

Continue Working On command in Remote dropdown

如果你正在使用基于浏览器的编辑器“继续处理...”命令提供在本地或在GitHub Codespaces中的云托管环境中打开仓库的选项。

Continue Working On from web-based editor

首次使用继续处理且有未提交的更改时,你可以选择使用云端更改将你的编辑带到你选择的开发环境中,该功能会将你待处理的更改存储在与“设置同步”相同的 VS Code 服务上。

这些更改在应用到你的目标开发环境后将从我们的服务中删除。如果你选择在没有未提交更改的情况下继续,你随时可以通过配置设置 "workbench.cloudChanges.continueOn": "prompt" 来更改此偏好。

如果你的待处理更改没有自动应用到你的目标开发环境,你可以使用云端更改:显示云端更改命令来查看、管理和删除你存储的更改。

后续步骤