使用仓库和远程仓库

Git 仓库和远程仓库使您能够通过在不同位置同步工作来与他人协作。VS Code 提供了用于处理远程仓库的集成工具,无需具备 Git 命令行知识。

本文介绍了如何在 VS Code 中处理 Git 仓库和远程仓库,包括克隆、发布、同步更改以及管理多个仓库。

理解远程仓库

远程仓库是托管在其他服务器(如 GitHub、Azure DevOps 或 GitLab)上的 Git 仓库。远程仓库通过提供团队成员共享工作的中心位置来实现协作。

当您克隆一个仓库时,Git 会自动创建一个名为 origin 的远程仓库,指向原始仓库。如果您需要与不同的服务器或仓库交互,可以使用多个远程仓库。

使用远程仓库涉及三个主要操作

  • 获取 (Fetch):从远程仓库下载提交而不更改您的工作文件。这让您可以在不将他人的更改合并到您的工作中时查看他们的进度。

  • 拉取 (Pull):从远程仓库下载提交并将其合并到您当前的分支。这是一次性完成“获取”和“合并”的操作。

  • 推送 (Push):将您的本地提交上传到远程仓库,以便他人可以访问您的更改。

Diagram of Git fetch, pull, and push operations between local and remote repositories.

当您推送时,Git 需要知道将提交发送到哪个远程仓库。默认情况下,Git 使用为您当前分支配置的上游分支。如果没有设置上游分支,VS Code 会提示您发布分支并设置上游。

添加远程仓库

要向您的仓库添加新的远程仓库

  1. 在“源代码控制”视图(⌃⇧G (Windows, Linux Ctrl+Shift+G))中,选择更多操作 (...) > 远程仓库 > 添加远程仓库

    或者,从命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))运行 Git: Add Remote 命令。

  2. 输入远程仓库的 URL

  3. 输入远程仓库的名称(例如 upstream

现在,您的仓库有了一个额外的远程仓库,您可以从中获取内容或向其推送内容。

使用类似的步骤移除远程仓库 (Git: Remove Remote)。

克隆仓库

克隆会在您的机器上创建远程仓库的本地副本。克隆的仓库包含远程仓库中的所有分支、提交和历史记录。默认情况下,Git 会配置一个名为 origin 的远程仓库,指向您克隆时的 URL。

要克隆仓库,请在命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中运行 Git: Clone 命令,或在“源代码控制”视图中选择克隆仓库按钮。

如果您从 GitHub 克隆,VS Code 会提示您进行 GitHub 身份验证。然后,从列表中选择一个仓库克隆到您的机器。该列表包含公共和私有仓库。对于其他 Git 提供商,请输入仓库 URL。

Screenshot of the Clone Repository prompt in VS Code.

克隆时,VS Code 会要求您选择一个本地文件夹来存储仓库。克隆完成后,您可以选择在新窗口中打开该仓库。

GitHub Pull Requests and Issues 扩展通过拉取请求和问题管理增强了 GitHub 集成。了解更多关于 在 VS Code 中使用 GitHub 的信息。

发布到 GitHub

如果您有一个未连接到远程仓库的本地仓库,可以直接从 VS Code 将其发布到 GitHub。

要将仓库发布到 GitHub

  1. 打开“源代码控制”视图

  2. 在“源代码控制”视图中选择发布到 GitHub

  3. 如果出现提示,请登录 GitHub

  4. 选择创建公共仓库还是私有仓库

  5. 选择要在初始提交中包含的文件

VS Code 将在 GitHub 上创建一个新仓库,将其添加为远程仓库,并推送您的提交。

提示

发布到 GitHub 是让您的本地工作上线的最快方法。它可以在一步操作中完成创建仓库、配置远程仓库和推送提交。

推送、拉取和同步

推送、拉取和同步是将您的本地工作与远程仓库保持同步的核心操作。

推送提交

推送会将您的本地提交上传到远程仓库。要推送提交:

  1. 在本地提交您的更改

  2. 在“源代码控制”视图中选择更多操作 (...) > 推送

    或者,选择状态栏中的同步图标,一次性执行拉取和推送操作。如果您想推送到特定的远程仓库,请使用推送到...选项。

    您也可以通过使用“源代码控制图”视图工具栏中的“推送”图标来推送本地提交。

  3. 如果出现提示,请登录以进行远程身份验证

您的提交已上传到远程分支。其他团队成员现在可以拉取您的更改。

注意

如果您的分支未配置上游,VS Code 会提示您先发布该分支。

拉取提交

拉取会从远程仓库下载提交并将其合并到您的本地分支。要拉取提交:

  1. 在“源代码控制”视图中选择更多操作 (...) > 拉取

    或者,选择状态栏中的同步图标,一次性执行拉取和推送操作。如果您想从特定的远程仓库拉取,请使用从...拉取选项。

    您也可以通过使用“源代码控制图”视图工具栏中的“拉取”图标来拉取远程提交。

  2. VS Code 将下载并合并远程提交

如果您的本地更改与远程提交之间存在冲突,VS Code 会通过合并冲突解决工具帮助您处理这些冲突。

使用变基 (Rebase) 拉取

您可以选择在远程更改之上变基您的本地提交,而不是合并它们:

  1. 在“源代码控制”视图中选择更多操作 (...) > 拉取 (变基)

  2. VS Code 会先应用远程提交,然后在其之上重演您的本地提交

变基会创建一条不包含合并提交的线性历史记录。了解更多关于 Git 变基 的信息。

同步更改

同步结合了拉取和推送操作——它首先从远程仓库拉取更改,然后推送您的本地提交。这是保持工作同步的推荐方式。

要同步更改:

  • 在“源代码控制”视图中选择同步更改
  • 选择状态栏中的同步图标

Screenshot of the Sync Changes button in the Source Control view.

状态栏同步指示器会显示您需要推送 (↑) 和拉取 (↓) 的提交数量。例如,↑2 ↓1 表示您有 2 个提交需要推送,1 个提交需要拉取。

提示

配置 git.confirmSync 在 VS Code 中打开 在 VS Code Insiders 中打开 设置,以控制 VS Code 是否在同步前请求确认。

获取提交

获取 (Fetch) 会从远程仓库下载提交,而不将其合并到您的本地分支。这让您可以在集成之前审查传入的更改。

要获取提交:

  • 在“源代码控制”视图中选择更多操作 (...) > 获取
  • 选择从所有远程仓库获取,以从所有已配置的远程仓库获取更新
  • 选择获取 (清理) 以获取更新并移除已删除的远程分支(若要始终清理,请启用 git.pruneOnFetch 在 VS Code 中打开 在 VS Code Insiders 中打开 设置)

获取后,您可以在“源代码控制图”中查看传入的提交,然后再使用拉取进行合并。

要自动在后台获取提交,请启用 git.autofetch 在 VS Code 中打开 在 VS Code Insiders 中打开 设置(默认禁用)。要配置获取间隔,请使用 git.autofetchPeriod 在 VS Code 中打开 在 VS Code Insiders 中打开 设置(默认 180 秒)。

状态栏同步操作

状态栏提供了快速访问常见仓库和远程操作的途径,无需打开“源代码控制”视图。

分支指示器

左下角的分支指示器显示:

  • 当前分支名称:选择以切换分支
  • 同步状态:需要推送 (↑) 和拉取 (↓) 的提交数量
  • 发布状态:对于未发布的分支显示发布分支

Screenshot of the Status Bar showing the branch indicator with sync status.

状态栏中的同步图标(旋转箭头)使您能够将更改与远程仓库同步(推送和拉取)。

您可以通过以下设置自定义状态栏行为:

  • git.showActionButton 在 VS Code 中打开 在 VS Code Insiders 中打开 :控制显示哪个操作按钮(同步或提交)
  • git.showPushSuccessNotification 在 VS Code 中打开 在 VS Code Insiders 中打开 :推送成功后显示通知
  • git.showCommitInput 在 VS Code 中打开 在 VS Code Insiders 中打开 :在“源代码控制”视图中显示提交输入框

源代码控制图

“源代码控制图”提供了提交历史、分支关系和与远程仓库同步状态的可视化表示。这使得理解传入和传出的更改变得简单。

Screenshot of the Source Control Graph showing commit history and incoming/outgoing commits.

该图显示:

  • 当前分支:用特殊指示器高亮显示
  • 上游分支:显示远程仓库中您尚未拉取的提交
  • 传入的提交 (↓):远程仓库中您可以拉取的提交
  • 传出的提交 (↑):您可以推送的本地提交
  • 其他分支:仓库中的本地和远程分支

您可以直接从图表工具栏中执行获取、推送和拉取操作。图表视图还显示传入和传出的更改,使您可以轻松判断何时需要同步。选择图表中的项目以查看该提交中更改的各个文件。

通过以下设置自定义“源代码控制图”:

  • scm.graph.showIncomingChanges 在 VS Code 中打开 在 VS Code Insiders 中打开 :显示或隐藏传入的提交
  • scm.graph.showOutgoingChanges 在 VS Code 中打开 在 VS Code Insiders 中打开 :显示或隐藏传出的提交
  • scm.graph.pageSize 在 VS Code 中打开 在 VS Code Insiders 中打开 :初始加载的提交数量

了解更多关于 使用源代码控制图查看提交历史 的信息。

使用仓库

“仓库”视图使您能够在单个工作区中管理多个 Git 仓库。这在处理跨越多个仓库的项目时非常有用。“仓库”视图还会显示与您的仓库关联的 Git 工作树 (worktrees)

Screenshot of the Repositories view in VS Code showing multiple Git repositories.

要显示“仓库”视图,请从命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))运行 Source Control: Focus on Repositories View 命令。配置 scm.alwaysShowRepositories 在 VS Code 中打开 在 VS Code Insiders 中打开 设置,以始终在“源代码控制”视图中显示“仓库”视图。

对于每个仓库,您可以查看活动分支、同步状态,并访问获取、拉取、推送等操作。

当您打开包含 Git 仓库的文件夹时,VS Code 会自动检测它们。如果您打开一个包含多个仓库的文件夹(如 monorepo),所有仓库都会显示在“仓库”视图中。

仓库选择模式

如果您更喜欢一次专注于单个仓库或工作树,可以切换到单仓库模式。在这种模式下,您只会看到所选仓库的更改和图表。在多仓库模式下运行时,“源代码控制”视图会显示所有仓库的更改。使用 scm.repositories.selectionMode 在 VS Code 中打开 在 VS Code Insiders 中打开 设置可以在多仓库和单仓库模式之间切换。

凭据助手

凭据助手会安全地存储您的身份验证凭据,这样您就不必每次推送或拉取时都输入它们。您应该 设置凭据助手,以避免在每次 VS Code 与远程仓库交互时被要求输入凭据。

后续步骤

© . This site is unofficial and not affiliated with Microsoft.