Skip to main content

在代码空间中使用源控制

在对代码空间中的文件进行更改后,您可以快速提交更改并将更新推送到远程仓库。

Note

  • 将 GitHub Codespaces 与 JetBrains IDE 结合使用的功能目前为 公共预览版,可能随时更改。
  • 若要在 JetBrains IDE 中处理 Codespace,必须使用 2023.3.* 或 2024.1.* 版本的 JetBrains 网关。

关于 GitHub Codespaces 中的源代码管理

您可以直接在代码空间内执行所需的所有 Git 操作。 例如,可以从远程存储库获取更改、切换分支、创建新分支、提交和推送更改以及创建拉取请求。 您可以使用代码空间内的集成终端输入 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”。
  • 在代码空间中,创建一个新的分支来操作。
  • 进行更改并保存。
  • 提交更改。
  • 提出拉取请求。

Note

默认情况下,GitHub Codespaces 使用 HTTPS 协议在远程存储库中传入和传出数据,并使用配置了对从中创建 codespace 的存储库的读取和写入访问权限的 GITHUB_TOKEN 进行身份验证。 如果身份验证出现问题,请参阅“排查存储库身份验证问题”。

关于自动创建分支

若要为只有读取访问权限的存储库创建 codespace,必须具有对存储库创建分支的权限。

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

如果从 codespace 进行提交,或者推送新分支,GitHub Codespaces 会在帐户下创建存储库的分支并将其链接到 codespace,或将 codespace 链接到现有分支(如果已有存储库分支)。 然后,可以将更改推送到分支并创建拉取请求,以向上游存储库提出更改。

如果从命令行进行提交,将看到一条提示,询问是否要继续将 codespace 链接到新的或现有的分支。 输入 y 以继续。 如果从 VS Code 中的源代码管理视图或 JetBrains IDE 中的导航栏提交更改,则 codespace 会自动链接到分支,而系统不会提示。

Note

  • 如果删除分支存储库,则会删除任何链接到该分支的 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. 在活动栏中,单击“源代码管理”视图。

    屏幕截图显示 VS Code 活动栏,其中“源代码管理”按钮以橙色边框突出显示。

  2. 若要暂存更改,请单击已添加或更改文件旁边的 +,如果你更改了多个文件并希望全部暂存,请单击“更改”旁边的按钮 。

    “源代码管理”侧栏的屏幕截图,其中位于“更改”右侧的暂存按钮(加号)用深橙色边框突出显示。

    Note

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

  3. 若要提交暂存更改,请键入描述所做更改的提交消息,然后单击“提交”。

    “源代码管理”侧栏的屏幕截图,其中提交消息及其下方的“提交”按钮用深橙色边框突出显示。

  4. 单击“发布分支”。

    “源代码管理”侧栏的屏幕截图,其中显示了“发布分支”按钮。

  5. 在“存储库名称”下拉列表中,键入新存储库的名称,然后选择“发布到 GitHub 专用存储库”或“发布到 GitHub 公共存储库”。

    VS Code 中的存储库名称下拉列表的屏幕截图。 显示了两个选项,用于发布到专用或公共存储库。

    新存储库的所有者将是创建 codespace 时所使用的 GitHub 帐户。

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

    成功发布存储库的确认消息的屏幕截图,其中显示了“在 GitHub 上打开”按钮。

创建或切换分支

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

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

    VS Code 状态栏中显示的分支名称的屏幕截图。

  3. 在下拉菜单中,单击要切换到的分支或输入新分支的名称,然后单击“创建新分支”。

    用于在 VS Code 中创建新分支的下拉列表的屏幕截图。

Tip

如果有人最近在远程存储库上更改了文件,则在你切换到的分支中,只有将更改拉取到 codespace 中之后,你才能看到这些更改。

提交更改

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

    屏幕截图显示 VS Code 活动栏,其中“源代码管理”按钮以橙色边框突出显示。

  2. 若要暂存更改,请单击已更改文件旁边的 ,如果你更改了多个文件并希望全部暂存,请单击“更改”旁边的按钮。

    “源代码管理”边栏的屏幕截图,其中位于“更改”右侧的暂存按钮(加号)以深橙色边框突出显示。

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

    “源代码管理”边栏的屏幕截图,其中提交消息输入到“提交”按钮上方的文本框中。

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

    “提交”按钮下拉列表的屏幕截图。 “提交和推送”选项以深橙色边框突出显示。

从远程仓库拉取更改

您可以随时将远程仓库的更改拉取到您的代码空间。

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

    屏幕截图显示 VS Code 活动栏,其中“源代码管理”按钮以橙色边框突出显示。

  2. 在边栏顶部,单击

    “源代码管理”边栏的屏幕截图。 省略号按钮(三个点)突出显示,并以深橙色边框突出显示。

  3. 在下拉菜单中,单击“拉取”。

如果自创建代码空间以来开发容器配置已更改,则可以通过为代码空间重建容器来应用更改。 有关详细信息,请参阅“开发容器简介”。

设置代码空间以自动获取新更改

您可以设置代码空间,以自动获取对远程仓库所做的任何新提交的详细信息。 这允许您查看仓库的本地副本是否过时,如果是,您可以选择拉取新的更改。

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

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

    活动栏底部的屏幕截图。 “管理”按钮(标有齿轮符号)以深橙色边框突出显示。

  2. 在菜单中,单击****“设置”。

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

    “设置”选项卡的屏幕截图。搜索文本“自动获取”以深橙色边框突出显示。

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

    “Git: Autofetch”设置的屏幕截图,设置为“all”。

  5. 如果要更改自动获取的间隔秒数,请编辑 Git: Autofetch Period 的值。

提出拉取请求

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

    “源代码管理”边栏顶部的屏幕截图。 拉取请求图标以深橙色边框突出显示。

  2. 检查作为合并来源的本地分支和仓库以及作为合并目标的远程分支和仓库是否正确。 然后为拉取请求提供标题和描述。

    “GitHub 拉取请求”边栏的屏幕截图,其中包含用于创建拉取请求的表单,包括“标题”和“说明”字段。

  3. 单击“创建”。

将更改推送到远程仓库

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

  1. 在边栏顶部,单击

    “源代码管理”边栏的屏幕截图。 省略号按钮(三个点)突出显示,并以深橙色边框突出显示。

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

发布从模板创建的 Codespace

通过模板存储库或“你的 Codespace”页上的模板创建 Codespace 时,所做的工作不会存储在 GitHub 上的存储库中,直到你发布 Codespace。 有关详细信息,请参阅“通过模板创建 codespace”。

如果你使用的是 codespace,可以从 VS Code Web 客户端或桌面应用程序发布它。

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

    屏幕截图显示 VS Code 活动栏,其中“源代码管理”按钮以橙色边框突出显示。

  2. 若要暂存更改,请单击已添加或更改文件旁边的 +,如果你更改了多个文件并希望全部暂存,请单击“更改”旁边的按钮 。

    “源代码管理”侧栏的屏幕截图,其中位于“更改”右侧的暂存按钮(加号)用深橙色边框突出显示。

    Note

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

  3. 若要提交暂存更改,请键入描述所做更改的提交消息,然后单击“提交”。

    “源代码管理”侧栏的屏幕截图,其中提交消息及其下方的“提交”按钮用深橙色边框突出显示。

  4. 单击“发布分支”。

    “源代码管理”侧栏的屏幕截图,其中显示了“发布分支”按钮。

  5. 在“存储库名称”下拉列表中,键入新存储库的名称,然后选择“发布到 GitHub 专用存储库”或“发布到 GitHub 公共存储库”。

    VS Code 中的存储库名称下拉列表的屏幕截图。 显示了两个选项,用于发布到专用或公共存储库。

    新存储库的所有者将是创建 codespace 时所使用的 GitHub 帐户。

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

    成功发布存储库的确认消息的屏幕截图,其中显示了“在 GitHub 上打开”按钮。

创建或切换分支

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

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

    VS Code 状态栏中显示的分支名称的屏幕截图。

  3. 在下拉菜单中,单击要切换到的分支或输入新分支的名称,然后单击“创建新分支”。

    用于在 VS Code 中创建新分支的下拉列表的屏幕截图。

Tip

如果有人最近在远程存储库上更改了文件,则在你切换到的分支中,只有将更改拉取到 codespace 中之后,你才能看到这些更改。

提交更改

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

    屏幕截图显示 VS Code 活动栏,其中“源代码管理”按钮以橙色边框突出显示。

  2. 若要暂存更改,请单击已更改文件旁边的 ,如果你更改了多个文件并希望全部暂存,请单击“更改”旁边的按钮。

    “源代码管理”边栏的屏幕截图,其中位于“更改”右侧的暂存按钮(加号)以深橙色边框突出显示。

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

    “源代码管理”边栏的屏幕截图,其中提交消息输入到“提交”按钮上方的文本框中。

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

    “提交”按钮下拉列表的屏幕截图。 “提交和推送”选项以深橙色边框突出显示。

从远程仓库拉取更改

您可以随时将远程仓库的更改拉取到您的代码空间。

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

    屏幕截图显示 VS Code 活动栏,其中“源代码管理”按钮以橙色边框突出显示。

  2. 在边栏顶部,单击

    “源代码管理”边栏的屏幕截图。 省略号按钮(三个点)突出显示,并以深橙色边框突出显示。

  3. 在下拉菜单中,单击“拉取”。

如果自创建代码空间以来开发容器配置已更改,则可以通过为代码空间重建容器来应用更改。 有关详细信息,请参阅“开发容器简介”。

设置代码空间以自动获取新更改

您可以设置代码空间,以自动获取对远程仓库所做的任何新提交的详细信息。 这允许您查看仓库的本地副本是否过时,如果是,您可以选择拉取新的更改。

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

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

    活动栏底部的屏幕截图。 “管理”按钮(标有齿轮符号)以深橙色边框突出显示。

  2. 在菜单中,单击****“设置”。

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

    “设置”选项卡的屏幕截图。搜索文本“自动获取”以深橙色边框突出显示。

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

    “Git: Autofetch”设置的屏幕截图,设置为“all”。

  5. 如果要更改自动获取的间隔秒数,请编辑 Git: Autofetch Period 的值。

提出拉取请求

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

    “源代码管理”边栏顶部的屏幕截图。 拉取请求图标以深橙色边框突出显示。

  2. 检查作为合并来源的本地分支和仓库以及作为合并目标的远程分支和仓库是否正确。 然后为拉取请求提供标题和描述。

    “GitHub 拉取请求”边栏的屏幕截图,其中包含用于创建拉取请求的表单,包括“标题”和“说明”字段。

  3. 单击“创建”。

将更改推送到远程仓库

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

  1. 在边栏顶部,单击

    “源代码管理”边栏的屏幕截图。 省略号按钮(三个点)突出显示,并以深橙色边框突出显示。

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

创建或切换分支

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

    状态栏的屏幕截图,其中显示了分支名称的工具提示。 分支图标和名称“主”,以深橙色轮廓突出显示。

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

    • 若要基于当前分支创建新分支,请单击“新分支” 。

      屏幕截图显示分支弹出菜单,其中“新分支”选项处于选定状态。

      输入新建分支的名称并单击“创建”。

      “新建分支”对话框的屏幕截图,其中显示“创建”和“取消”按钮。 已输入“my-branch”作为分支名称。

    • 要签出现有分支,请开始键入要签出的分支的名称。单击列表中的分支,然后单击“签出” 。

      分支弹出菜单的屏幕截图,其中选择了“origin/templates”分支,并在子菜单中选择了“签出”。

      Tip

      如果有人最近在远程存储库上更改了文件,则在你切换到的分支中,只有将更改拉取到 codespace 中之后,你才能看到这些更改。

提交更改

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

    JetBrains 客户端顶部导航栏的屏幕截图。 突出显示了用于提交更改的复选标记。

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

  3. 单击“提交”。****

    此外,也可以单击“提交”旁边的向下箭头,然后单击“提交并推送” 。

    “提交更改”对话框的屏幕截图,其中显示了“提交并推送”按钮。

从远程仓库拉取更改

可以从远程存储库的同一分支中拉取更改,并将这些更改应用到你在 codespace 中处理的存储库副本。

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

    JetBrains 客户端顶部导航栏的屏幕截图。 以深橙色轮廓突出显示了向下箭头图标。

  2. 在“更新项目”对话框中,选择是要合并传入的更改还是将其变基。

    “更新项目”对话框的屏幕截图,其中显示用于合并或变基的选项,以及“不再显示”复选框。

  3. 单击 “确定”

将更改推送到远程仓库

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

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

    JetBrains 客户端顶部导航栏的屏幕截图。 以深橙色轮廓突出显示了向上箭头图标。

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