跳至主要内容

在 Codespace 中使用源代码管理

在 Codespace 中更改文件后,您可以快速提交更改并将更新推送到远程存储库。

注意

  • 使用 GitHub Codespaces 与 JetBrains IDE 现处于公开预览阶段,可能会发生更改。
  • 要在 JetBrains IDE 中处理 Codespace,必须使用 JetBrains Gateway 的 2023.3.* 或 2024.1.* 版本。

关于 GitHub Codespaces 中的源代码管理

您可以在 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 将自动链接到分叉,而无需提示您。

注意

  • 如果您删除分叉存储库,则链接到该分叉的任何 Codespace 也会被删除,即使您最初是从上游存储库创建它们。
  • 如果您从命令行进行提交并通过输入 n 拒绝新的分叉,则应从命令行而不是从 VS Code 的“源代码管理”视图推送更改。如果您使用“源代码管理”视图,VS Code 仍会在推送时尝试为您创建分叉。

当 GitHub Codespaces 创建分叉或将您的 Codespace 链接到现有分叉时,会发生以下情况。

  • 与您的 Codespace 关联的访问令牌将更新为包括对分叉的 readwrite 权限,以及对上游存储库的 read 权限。
  • 在您的 Git 设置中,上游存储库将重新分配给名称 upstream,并且分叉将作为新远程存储库添加到名称 origin 下。

默认情况下,您从编辑器的用户界面访问的源代码管理命令(例如 VS Code 中的“同步更改”按钮)将目标设置为您的分叉。如果您从命令行工作,则可以使用 origin 指代您的分叉,使用 upstream 指代上游存储库。例如,您可以从上游存储库获取更改以确保您的 Codespace 与项目的最新更改保持同步。

git fetch upstream

完成一些更改后,您可以将其推送到分叉的功能分支。

git push origin my-feature-branch

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

发布从模板创建的 Codespace

当您从模板存储库或“您的 Codespace”页面上的模板创建 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 存储库,否则您将看不到更改列表。要发布从空白模板创建的 Codespace,请在“源代码管理”视图中单击“发布到 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 上查看新存储库。

    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 以来开发容器配置已更改,则可以通过重建 Codespace 的容器来应用更改。有关更多信息,请参阅“开发容器简介”。

将 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

当您从模板存储库或“您的 Codespace”页面上的模板创建 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 存储库,否则您将看不到更改列表。要发布从空白模板创建的 Codespace,请在“源代码管理”视图中单击“发布到 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 上查看新存储库。

    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 以来开发容器配置已更改,则可以通过重建 Codespace 的容器来应用更改。有关更多信息,请参阅“开发容器简介”。

将 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.

从远程存储库拉取更改

您可以从远程存储库上的同一分支拉取更改并将这些更改应用于您在 Codespace 中处理的存储库副本。

  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. 在“推送提交”对话框中,单击“推送”。