跳至主要内容

在 CodeSpace 中使用源代码管理

在对 CodeSpace 中的文件进行更改后,你可以快速提交更改并将更新推送到远程存储库。

注释

  • 目前,将 GitHub CodeSpace 与 JetBrains IDE 配合使用处于公开测试阶段,可能会发生变化。
  • 要在 JetBrains IDE 中处理 CodeSpace,你必须使用 JetBrains Gateway 版本 2023.3.* 或 2024.1.*。

关于 GitHub CodeSpace 中的源代码管理

你可以在 CodeSpace 中直接执行所有所需的 Git 操作。例如,你可以从远程存储库获取更改、切换分支、创建新分支、提交和推送更改以及创建拉取请求。你可以使用 CodeSpace 中的集成终端输入 Git 命令,也可以单击图标和菜单选项来完成所有最常见的 Git 任务。本指南解释了如何使用图形用户界面进行源代码管理。

有关 Visual Studio Code 中 Git 支持的详细信息,请参阅 Visual Studio Code 文档中的“在 VS Code 中使用版本控制”。

Visual Studio Code Web 客户端中的源代码控制使用与 Visual Studio Code 桌面应用程序相同的工作流。有关详细信息,请参阅 Visual Studio Code 文档中的“在 VS Code 中使用版本控制”。

使用 GitHub Codespaces 更新文件的典型工作流如下:

  • 在 GitHub 上存储库的默认分支中创建 Codespace。请参阅“为存储库创建 Codespace”。
  • 在 Codespace 中,创建一个新分支来处理。
  • 进行更改并保存更改。
  • 提交更改。
  • 提出拉取请求。

注意:默认情况下,GitHub Codespaces 使用 HTTPS 协议向远程存储库传输数据并从远程存储库传输数据,并使用从你创建 Codespace 的存储库配置的具有读写权限的 GITHUB_TOKEN 进行身份验证。如果你在身份验证方面遇到问题,请参阅“对存储库进行身份验证时遇到的问题”。

关于自动分叉

要为仅具有读取权限的存储库创建 Codespace,你必须有分叉存储库的权限。

在创建 Codespace 之前,无需分叉存储库。例如,你可以从存储库创建 Codespace 以查看项目并进行实验性更改,然后在不再需要时删除 Codespace。

如果你从 Codespace 提交,或推送新分支,GitHub Codespaces 会在你帐户下为存储库创建一个分支并将其链接到你的 Codespace,或者如果你已经为存储库创建了分支,则会将你的 Codespace 链接到现有分支。然后,你可以将更改推送到分支并创建一个拉取请求,以向源存储库提出更改建议。

如果你从命令行提交,你将看到一个提示,询问你是否要继续将你的 Codespace 链接到新分支或现有分支。输入 y 以继续。如果你从 VS Code 中的“源代码控制”视图或 JetBrains IDE 中的导航栏提交更改,你的 Codespace 会自动链接到分支,而无需提示你。

注释

  • 如果您删除了您的 fork 仓库,那么任何链接到该 fork 的 Codespaces 都会被删除,即使您最初是从上游仓库创建的它们。
  • 如果您从命令行提交并通过输入 n 拒绝新的 fork,您应该从命令行推送您的更改,而不是从 VS Code 的源代码管理视图推送。如果您使用源代码管理视图,VS Code 在推送时仍会尝试为您创建一个 fork。

当 GitHub Codespaces 创建一个 fork 或将您的 Codespace 链接到一个现有的 fork 时,会发生以下事情。

  • 与您的 Codespace 关联的访问令牌会更新为包括对您的 fork 的 readwrite 权限,以及对上游仓库的 read 权限。
  • 在您的 Git 设置中,上游仓库被重新分配为名称 upstream,而 fork 被添加为名称 origin 下的一个新的远程仓库。

默认情况下,您从编辑器的用户界面访问的源代码管理命令(例如 VS Code 中的 同步更改 按钮)会以您的 fork 为目标。如果您从命令行工作,您可以使用 origin 来引用您的 fork,并使用 upstream 来引用上游仓库。例如,您可以从上游仓库获取更改,以确保您的 Codespace 与该项目的最新更改保持同步。

git fetch upstream

当您做出一些更改后,您可以将它们推送到您的 fork 的一个功能分支。

git push origin my-feature-branch

有关更多信息,请参阅“关于 forks”。

发布从模板创建的 Codespace

当您从模板仓库或“您的 Codespaces”页面上的模板创建一个 Codespace 时,您所做的工作不会存储在 GitHub 上的仓库中,直到您发布您的 Codespace。有关更多信息,请参阅“从模板创建 Codespace”。

如果您在 Codespace 中工作,您可以从 VS Code Web 客户端或桌面应用程序发布它。

  1. 在活动栏中,单击 源代码管理 视图。

    Screenshot of the VS Code Activity Bar with the source control button highlighted with an orange outline.

  2. 要暂存您的更改,请单击您已添加或更改的文件旁边的 +,或者如果您已更改多个文件并且您想暂存它们,请单击 更改 旁边的 +

    Screenshot of the "Source control" side bar with the staging button (a plus sign), to the right of "Changes," highlighted with a dark orange outline.

    注意:如果您从 GitHub 的空白模板开始,则在您将目录初始化为 Git 存储库之前,您将看不到更改列表。要发布从空白模板创建的 Codespaces,请在“源代码管理”视图中单击发布到 GitHub,然后跳至步骤 5。

  3. 要提交您的暂存更改,请输入描述您所做更改的提交消息,然后单击提交

    Screenshot of the "Source control" side bar with a commit message and, below it, the "Commit" button both highlighted with a dark orange outline.

  4. 单击发布分支

    Screenshot of the "Source control" side bar showing the "Publish Branch" button.

  5. 在“存储库名称”下拉列表中,输入新存储库的名称,然后选择发布到 GitHub 私有存储库发布到 GitHub 公共存储库

    Screenshot of the repository name dropdown in VS Code. Two options are shown, for publishing to a private or a public repository.

    新存储库的所有者将是您用来创建 Codespace 的 GitHub 帐户。

  6. (可选)在编辑器的右下角出现的弹出窗口中,单击在 GitHub 上打开以在 GitHub.com 上查看新存储库。

    Screenshot of a confirmation message for a successfully published repository, showing the "Open on GitHub" button.

创建或切换分支

  1. 如果当前分支未显示在状态栏中,请在 Codespace 底部右键单击状态栏,然后选择源代码管理

  2. 单击状态栏中的分支名称。

    Screenshot of the branch name displayed in the status bar of VS Code.

  3. 在下拉列表中,单击您要切换到的分支,或输入新分支的名称,然后单击创建新分支

    Screenshot of the dropdown for creating a new branch in VS Code.

提示:如果有人最近在您切换到的分支中的远程存储库上更改了文件,您可能在将更改拉取到 Codespace 中之前看不到这些更改。

提交您的更改

  1. 在活动栏中,单击 源代码管理 视图。

    Screenshot of the VS Code Activity Bar with the source control button highlighted with an orange outline.

  2. 要暂存您的更改,请单击 在您更改的文件旁边,或在更改旁边(如果您更改了多个文件并且希望暂存所有文件)。

    Screenshot of the "Source control" side bar with the staging button (a plus sign), to the right of "Changes," highlighted with a dark orange outline.

  3. 在文本框中,输入描述您所做更改的提交消息。

    Screenshot of the "Source control" side bar with a commit message entered into the text box above the "Commit" button.

  4. 单击提交按钮右侧的向下箭头,然后从下拉菜单中选择提交并推送

    Screenshot of the dropdown for the "Commit" button. The option "Commit & Push" is highlighted with a dark orange outline.

从远程存储库拉取更改

您可以随时将远程存储库中的更改拉取到您的 Codespace 中。

  1. 在活动栏中,单击 源代码管理 视图。

    Screenshot of the VS Code Activity Bar with the source control button highlighted with an orange outline.

  2. 在侧边栏顶部,单击 .

    Screenshot of the "Source control" side bar. The ellipsis button (three dots) is highlighted with a dark orange outline.

  3. 在下拉菜单中,单击拉取

如果您在创建 Codespace 后更改了 dev 容器配置,则可以通过为 Codespace 重新生成容器来应用这些更改。有关更多信息,请参阅“dev 容器简介”。

设置您的 Codespace 以自动获取新更改

您可以将 Codespace 设置为自动获取对远程存储库所做的任何新提交的详细信息。这使您可以查看存储库的本地副本是否已过时,在这种情况下,您可以选择拉取新更改。

如果获取操作在远程存储库上检测到新更改,您将在状态栏中看到新提交的数量。然后,您可以将更改拉取到本地副本中。

  1. 单击活动栏底部的管理按钮。

    Screenshot of the bottom of the Activity Bar. The Manage button (labeled with a gear symbol) is highlighted with a dark orange outline.

  2. 在菜单中,单击设置

  3. 在“设置”页面上,搜索:autofetch

    Screenshot of the "Settings" tab. The search text "autofetch" is highlighted with a dark orange outline.

  4. 要获取当前存储库注册的所有远程更新的详细信息,请将Git:自动获取设置为all

    Screenshot of the "Git: Autofetch" setting, set to "all."

  5. 如果您想更改每次自动获取之间的秒数,请编辑Git:自动获取周期的值。

提出拉取请求

  1. 将更改提交到存储库的本地副本后,单击“源代码管理”侧边栏顶部的拉取请求图标。

    Screenshot of the top of the "Source Control" side bar. The pull request icon is highlighted with a dark orange outline.

  2. 检查要从中合并的本地分支和存储库以及要合并到的远程分支和存储库是否正确。然后为拉取请求提供标题和说明。

    Screenshot of the "GitHub Pull Request" side bar with a form for creating a pull request, including "Title" and "Description" fields.

  3. 单击创建

将更改推送到远程存储库

您可以推送已保存并提交的更改。这会将这些更改应用到远程存储库上的上游分支。如果您尚未准备好创建拉取请求,或者您更愿意在 GitHub 上创建拉取请求,则可能需要这样做。

  1. 在侧边栏顶部,单击 .

    Screenshot of the "Source control" side bar. The ellipsis button (three dots) is highlighted with a dark orange outline.

  2. 在下拉菜单中,单击推送

发布从模板创建的 Codespace

当您从模板仓库或“您的 Codespaces”页面上的模板创建一个 Codespace 时,您所做的工作不会存储在 GitHub 上的仓库中,直到您发布您的 Codespace。有关更多信息,请参阅“从模板创建 Codespace”。

如果您在 Codespace 中工作,您可以从 VS Code Web 客户端或桌面应用程序发布它。

  1. 在活动栏中,单击 源代码管理 视图。

    Screenshot of the VS Code Activity Bar with the source control button highlighted with an orange outline.

  2. 要暂存您的更改,请单击您已添加或更改的文件旁边的 +,或者如果您已更改多个文件并且您想暂存它们,请单击 更改 旁边的 +

    Screenshot of the "Source control" side bar with the staging button (a plus sign), to the right of "Changes," highlighted with a dark orange outline.

    注意:如果您从 GitHub 的空白模板开始,则在您将目录初始化为 Git 存储库之前,您将看不到更改列表。要发布从空白模板创建的 Codespaces,请在“源代码管理”视图中单击发布到 GitHub,然后跳至步骤 5。

  3. 要提交您的暂存更改,请输入描述您所做更改的提交消息,然后单击提交

    Screenshot of the "Source control" side bar with a commit message and, below it, the "Commit" button both highlighted with a dark orange outline.

  4. 单击发布分支

    Screenshot of the "Source control" side bar showing the "Publish Branch" button.

  5. 在“存储库名称”下拉列表中,输入新存储库的名称,然后选择发布到 GitHub 私有存储库发布到 GitHub 公共存储库

    Screenshot of the repository name dropdown in VS Code. Two options are shown, for publishing to a private or a public repository.

    新存储库的所有者将是您用来创建 Codespace 的 GitHub 帐户。

  6. (可选)在编辑器的右下角出现的弹出窗口中,单击在 GitHub 上打开以在 GitHub.com 上查看新存储库。

    Screenshot of a confirmation message for a successfully published repository, showing the "Open on GitHub" button.

创建或切换分支

  1. 如果当前分支未显示在状态栏中,请在 Codespace 底部右键单击状态栏,然后选择源代码管理

  2. 单击状态栏中的分支名称。

    Screenshot of the branch name displayed in the status bar of VS Code.

  3. 在下拉列表中,单击您要切换到的分支,或输入新分支的名称,然后单击创建新分支

    Screenshot of the dropdown for creating a new branch in VS Code.

提示:如果有人最近在您切换到的分支中的远程存储库上更改了文件,您可能在将更改拉取到 Codespace 中之前看不到这些更改。

提交您的更改

  1. 在活动栏中,单击 源代码管理 视图。

    Screenshot of the VS Code Activity Bar with the source control button highlighted with an orange outline.

  2. 要暂存您的更改,请单击 在您更改的文件旁边,或在更改旁边(如果您更改了多个文件并且希望暂存所有文件)。

    Screenshot of the "Source control" side bar with the staging button (a plus sign), to the right of "Changes," highlighted with a dark orange outline.

  3. 在文本框中,输入描述您所做更改的提交消息。

    Screenshot of the "Source control" side bar with a commit message entered into the text box above the "Commit" button.

  4. 单击提交按钮右侧的向下箭头,然后从下拉菜单中选择提交并推送

    Screenshot of the dropdown for the "Commit" button. The option "Commit & Push" is highlighted with a dark orange outline.

从远程存储库拉取更改

您可以随时将远程存储库中的更改拉取到您的 Codespace 中。

  1. 在活动栏中,单击 源代码管理 视图。

    Screenshot of the VS Code Activity Bar with the source control button highlighted with an orange outline.

  2. 在侧边栏顶部,单击 .

    Screenshot of the "Source control" side bar. The ellipsis button (three dots) is highlighted with a dark orange outline.

  3. 在下拉菜单中,单击拉取

如果您在创建 Codespace 后更改了 dev 容器配置,则可以通过为 Codespace 重新生成容器来应用这些更改。有关更多信息,请参阅“dev 容器简介”。

设置您的 Codespace 以自动获取新更改

您可以将 Codespace 设置为自动获取对远程存储库所做的任何新提交的详细信息。这使您可以查看存储库的本地副本是否已过时,在这种情况下,您可以选择拉取新更改。

如果获取操作在远程存储库上检测到新更改,您将在状态栏中看到新提交的数量。然后,您可以将更改拉取到本地副本中。

  1. 单击活动栏底部的管理按钮。

    Screenshot of the bottom of the Activity Bar. The Manage button (labeled with a gear symbol) is highlighted with a dark orange outline.

  2. 在菜单中,单击设置

  3. 在“设置”页面上,搜索:autofetch

    Screenshot of the "Settings" tab. The search text "autofetch" is highlighted with a dark orange outline.

  4. 要获取当前存储库注册的所有远程更新的详细信息,请将Git:自动获取设置为all

    Screenshot of the "Git: Autofetch" setting, set to "all."

  5. 如果您想更改每次自动获取之间的秒数,请编辑Git:自动获取周期的值。

提出拉取请求

  1. 将更改提交到存储库的本地副本后,单击“源代码管理”侧边栏顶部的拉取请求图标。

    Screenshot of the top of the "Source Control" side bar. The pull request icon is highlighted with a dark orange outline.

  2. 检查要从中合并的本地分支和存储库以及要合并到的远程分支和存储库是否正确。然后为拉取请求提供标题和说明。

    Screenshot of the "GitHub Pull Request" side bar with a form for creating a pull request, including "Title" and "Description" fields.

  3. 单击创建

将更改推送到远程存储库

您可以推送已保存并提交的更改。这会将这些更改应用到远程存储库上的上游分支。如果您尚未准备好创建拉取请求,或者您更愿意在 GitHub 上创建拉取请求,则可能需要这样做。

  1. 在侧边栏顶部,单击 .

    Screenshot of the "Source control" side bar. The ellipsis button (three dots) is highlighted with a dark orange outline.

  2. 在下拉菜单中,单击推送

创建或切换分支

  1. 单击状态栏右侧的分支名称。

    Screenshot of the status bar, with the tooltip for the branch name displayed. The branch icon and name, "main," are highlighted with a dark orange outline.

  2. 在弹出菜单中,执行以下操作之一

    • 要基于当前分支创建新分支,请单击新分支

      Screenshot of the branches pop-up menu with the "New Branch" option selected.

      输入新分支的名称,然后单击创建

      Screenshot of the "Create New Branch" dialog, with "Create" and "Cancel" buttons. "my-branch" has been entered as a branch name.

    • 要检出现有分支,请开始输入要检出的分支的名称。从列表中单击该分支,然后单击检出

      Screenshot of the branches pop-up menu with the "origin/templates" branch selected and "Checkout" selected in the submenu.

      提示:如果有人最近在您切换到的分支中的远程存储库上更改了文件,您可能在将更改拉取到 Codespace 中之前看不到这些更改。

提交您的更改

  1. 在导航栏右侧,单击复选标记。

    Screenshot of the navigation bar at the top of the JetBrains client. The check mark icon for committing your changes is highlighted.

  2. 在“提交更改”对话框中,输入提交消息。

  3. 单击提交

    或者,单击提交旁边的向下箭头,然后单击提交并推送

    Screenshot of the "Commit Changes" dialog showing the "Commit and Push" button.

从远程存储库拉取更改

您可以从远程存储库上的同一分支拉取更改,并将这些更改应用到您在代码空间中正在处理的存储库副本。

  1. 在导航栏右侧,单击向下箭头。

    Screenshot of the navigation bar at the top of the JetBrains client. The downward arrow icon is highlighted with a dark orange outline.

  2. 在“更新项目”对话框中,选择您是要合并还是重新设置传入的更改。

    Screenshot of the "Update Project" dialog with options to merge or rebase, and a "Don't show again" checkbox.

  3. 单击确定

将更改推送到远程存储库

您可以推送已保存并提交的更改。这会将这些更改应用到远程存储库上的上游分支。如果您尚未准备好创建拉取请求,或者您更愿意在 GitHub 上创建拉取请求,则可能需要这样做。

  1. 在导航栏右侧,单击向上箭头。

    Screenshot of the navigation bar at the top of the JetBrains client. The upward arrow icon is highlighted with a dark orange outline.

  2. 在“推送提交”对话框中,单击推送