本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

暂存和提交更改

创建具有明确描述的专注提交有助于你和你的团队理解代码库的历史。VS Code 提供了集成的 Git 工具来暂存更改并创建提交,并支持对包含哪些更改进行粒度控制。

本文介绍了 VS Code 中的暂存和提交工作流程,从 Git 的两步过程到使用 AI 助手来帮助编写提交信息以及在提交前审查更改。

Git 工作流

Git 使用两步过程来保存您的工作:暂存和提交。当您修改文件时,Git 会跟踪这些更改,但不会自动将它们包含在您的下一个提交中。暂存可以让你选择将哪些更改包含在每次提交中。

将暂存区想象成准备一个你工作的快照。你可以一次暂存所有更改以进行一次全面的提交,或者暂存特定的文件,甚至单独的行,以创建专注、逻辑清晰的提交,这样在以后更容易进行审查和理解。

查看更改

源代码管理视图 (⌃⇧G (Windows, Linux Ctrl+Shift+G)) 是您管理Git仓库更改的中心枢纽。更改根据其暂存状态组织成两个部分:

  • 更改:列出所有已修改、添加或删除的文件,这些文件尚未准备好提交
  • 暂存更改:列出已暂存并准备提交的文件

源代码管理视图的截图,显示在更改中有一个已修改和一个新文件。

请注意,更改的文件会列出带有“U”(未跟踪)、“M”(已修改)或“D”(已删除)图标,以指示更改的类型。此更改指示器也显示在资源管理器视图和已修改文件的编辑器标签标题中。

活动栏中的源控制图标也会显示受影响文件的数量徽章,以便您快速了解未提交的更改。

小贴士

您可以在扁平或树状结构中查看更改列表。通过更多操作 (...) > 查看和排序 > 以树状/列表形式查看 选项在源代码控制视图工具栏中切换。

编辑器边缘指示器

为了帮助您快速识别文件中的更改,VS Code 在编辑器中显示行号旁边的 gutter 标记,以表示自您上次提交以来新增、修改或删除的行。您还可以在小地图中看到这些标记。

沟渠颜色表示更改的类型:

  • 绿色条:自上次提交以来新增的行
  • 蓝色条:自上次提交以来修改的行
  • 红色三角形:删除的线(显示在删除点的上方)

当您选择 gutter indicator 时,将显示您的更改的内联 diff 预览。您可以使用相应的按钮直接从此预览中对更改进行分阶段或还原。

编辑器边缘指示器的截图显示了行更改,悬停显示了Git责备信息。

您可以使用以下设置来自定义行号指示器的行为:

  • scm.diffDecorations
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    控制何时显示 diff 装饰(全部、 gutter、概览、迷你地图 或 无)
  • scm.diffDecorationsGutterAction
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    : 控制在 gutter 菜单中可用的操作
  • scm.diffDecorationsGutterPattern
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    定制用于装饰边缘的图案
  • scm.diffDecorationsGutterVisibility
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    控制何时显示 gutter 装饰(始终显示或悬停时显示)
  • scm.diffDecorationsGutterWidth
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    设置 gutter 标记的宽度
  • scm.diffDecorationsIgnoreTrimWhitespace
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    : 忽略 diff 装饰中的空白更改

暂存更改

暂存更改可以为下次提交做好准备。您可以暂存整个文件或特定的行和代码块,以实现更细粒度的控制。

要将单个文件放入暂存区,请在更改列表中悬停在该文件上并选择+(加号)图标,或者右键单击文件并选择暂存更改。您也可以从更改部分拖动文件并将其放入暂存更改部分以将其放入暂存区。

源代码管理视图中暂存更改的截图。

当你使用树形视图时,你可以通过标记文件夹本身来标记整个文件夹。要一次标记所有修改的文件,请悬停在更改标题上并选择+(加号)图标。

在命令面板中(⇧⌘P(Windows, Linux Ctrl+Shift+P)有更专业的暂存操作可用。输入“Git: Stage”以查看暂存文件的选项。

阶段特定的行或代码块

不仅可以暂存整个文件,还可以暂存文件的特定部分。部分暂存可以让你创建专注的提交。例如,如果你在同一个文件中进行了格式更改和错误修复,你可以分别用适当的提交信息进行提交。

您可以在差异编辑器中执行部分暂存:

  1. 更改列表中选择一个文件以打开差异编辑器

  2. 选择您想要暂存的行

  3. 使用差异编辑器中选择内容旁边的暂存按钮,仅暂存这些行

    来自差异编辑器的暂存特定行的截图。

    你也可以右键点击选择并选择 阶段选择的范围 或者在命令面板中运行 Git: 阶段选择的范围

取消更改

要从暂存区移除文件,请在暂存更改列表中悬停在文件上,然后选择-(减号)图标,或者右键单击并选择取消暂存更改。文件将移回更改部分,同时不会丢失您的修改。

源代码管理视图中取消暂存更改的截图。

同样,你也可以使用差异编辑器旁边空白区的取消暂存按钮取消暂存特定的行或代码块。

提交你的更改

一旦你已对更改进行整理,你就可以创建一个提交来将更改保存到本地仓库。要创建一个提交,你需要编写一个提交信息来描述更改。此信息有助于你在查看提交历史记录时理解提交的用途。

编写提交信息

提交信息描述了您提交的更改,并帮助他人(以及您未来的自己)理解提交的目的。在源代码控制视图顶部的提交信息输入框中输入您的信息,然后选择提交以保存您已暂存的更改。

为了帮助你编写提交信息,请选择闪烁图标 在提交信息输入框中使用AI根据您的暂存更改生成消息。您可以创建自定义说明来指导AI生成消息。

使用AI生成提交信息的截图。

如果你想用多段落来编写提交信息,可以使用完整的编辑器,而不是输入框。通过启用这个功能来实现。

git.使用编辑器作为提交输入
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。当你提交更改而没有提交信息时,会为你打开一个新的编辑标签页,以便你写入信息。

小贴士

要浏览你之前的提交信息,请按(Windows, Linux (Windows, Linux 在提交信息输入框中聚焦时。

使用提交信息编辑器

与其使用提交信息输入框,您可以在一个完整的编辑器标签页中编写提交信息。这适用于较长的消息或当您希望有更多空间来编排消息时。

  1. 在源代码管理视图中,选择提交,而不在提交输入框中输入消息。这将打开一个名为的新编辑器标签提交编辑消息输入:.

    用于编写提交信息的COMMIT_EDITMSG编辑器的截图。

  2. 在编辑器中编写你的提交信息。你可以使用多段落并根据需要格式化你的消息。

  3. 要接受提交信息并完成提交操作,请关闭编辑器标签页或在编辑器中选择提交

    截图显示在COMMIT_EDITMSG编辑器中编写的提交信息,突出显示提交按钮。

  4. 要取消提交操作,您可以清除文本编辑器的内容并关闭编辑器标签,或者选择取消 (X) 在编辑器中。

    截图显示在COMMIT_EDITMSG编辑器中编写的提交信息,突出显示取消按钮。

要禁用使用编辑器来编写提交信息并恢复到快速输入控件,请禁用

git.使用编辑器作为提交输入
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置(重启 VS Code 以使更改生效)。

使用相同的流量提交更改在集成终端中执行的命令,启用

git.terminalGitEditor
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置(重启你的终端以使更改生效)。

提交更改

选择源控制视图中的提交按钮以提交暂存更改部分的更改。任何未暂存的更改将保留在更改部分,以供未来的提交。

要一次提交所有更改(已暂存和未暂存),请选择更多操作 (...) 菜单并选择提交 > 提交所有。这一步会将所有修改的文件暂存并提交。

修正之前的提交

如果您需要修改最近的提交,您可以修改它而不是创建一个新的提交。这在添加被遗忘的更改或更正提交信息时非常有用。

要修改提交,请选择提交按钮下拉菜单并选择提交(修改),或者使用暂存提交(修改)选项,从更多操作...)菜单。

注意

仅修改尚未推送到共享仓库的提交。修改已推送的提交会重写历史记录,可能会给其他协作者带来问题。

撤销上一次提交

如果您需要撤销上次提交,请在源代码控制视图中选择更多操作 (...) 菜单,然后选择提交 > 撤销上次提交。这将从您的分支历史记录中移除上次提交,但会将该提交的所有更改保留在暂存更改部分。

丢弃更改

要完全丢弃未提交的更改并恢复文件到其最后提交的状态,请在源代码控制视图中右键单击该文件并选择丢弃更改。或者,在更改列表中悬停该文件并选择丢弃图标(向左的弯曲箭头)。

已丢弃的更改被移动到回收站(Windows)或废纸篓(macOS/Linux),如果需要,您可以恢复它们。

使用差异编辑器查看更改

差异编辑器显示您的文件发生了哪些变化。它以并排方式显示原始版本和修改版本的比较。差异编辑器可以以并排视图或内联视图打开。

要打开差异编辑器,请在源代码控制视图中选择任何文件更改已暂存更改列表,以查看该文件与上次提交版本的更改。

小贴士

对于大文件,选择折叠未更改区域按钮以折叠diff编辑器工具栏中的未更改部分。这有助于您专注于实际的更改。您还可以使用下一条更改上一条更改按钮快速导航到更改之间。

并排视图与内联视图

默认情况下,差异编辑器在左侧显示原始文件,在右侧显示您的更改。

差异编辑器的截图,显示了文件版本之间的并排更改。

通过选择更多操作 (...) > 内联视图在差异编辑器工具栏中切换,以在一个编辑器中查看更改。

差异编辑器的截图,显示文件版本之间的原生更改。

配置您首选的默认视图

diffEditor.renderSideBySide
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

标记和撤销来自差异编辑器的更改

差异编辑器包括一个带有阶段撤销按钮的侧边栏,每个更改旁边都有这些按钮。这些按钮可以让你:

  • 直接从差异视图中阶段单个代码块或行
  • 撤销特定更改而不影响其他修改

如果你在差异编辑器中选择特定行,这些按钮只对你的选择进行操作。

您可以使用 隐藏差异编辑器的侧边栏

diffEditor.renderGutterMenu
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

可访问的差异查看器

对于屏幕阅读器用户,VS Code 提供了可访问的差异查看器,以统一的补丁格式展示更改。要打开可访问的差异查看器,请使用差异编辑器工具栏中的更多操作 (...) 菜单并选择打开可访问的差异查看器或使用F7键盘快捷键。

通过以下方式浏览更改转到下一个差异 (F7) 和 转到上一个差异 () 命令。

使用AI审查代码更改

VS Code 使您能够在提交更改之前使用 AI 助手来查看未提交的更改。这些 AI 功能可以补充手动代码审查,并帮助在开发工作流程的早期阶段捕捉问题。

要对您的未提交更改进行基于AI的代码审查:

  1. 选择源代码管理视图中的代码审查按钮

    源代码管理视图中代码审查按钮的截图。

  2. VS Code分析您的更改并生成审查评论和建议,这些评论作为覆盖评论出现在编辑器中。

    代码审查结果的截图,显示为编辑器覆盖注释。

Git 责任信息

VS Code 可以在编辑器和状态栏中以内联形式显示 git 责任信息。将鼠标悬停在状态栏项目或编辑器内联提示上以查看详细的 git 责任信息。

要启用或禁用git blame信息,请使用Git:切换Git Blame编辑器装饰Git:切换Git Blame状态栏项目命令,或配置这些设置:

  • git.blame.statusBarItem.enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    (默认启用)
  • git.blame.editorDecoration.enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    (要禁用编辑器中的悬停信息,请使用
    git.blame.editorDecoration.disableHover
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    设置)

要忽略显示git责任信息时的空白变化,请启用

git.blame.ignoreWhitespace
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

您可以自定义在编辑器和状态栏中显示的消息格式

git.blame.editorDecoration.template
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
git.blame.statusBarItem.template
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。您可以使用变量来表示最常见信息。

例如,以下模板显示提交的主题、作者的姓名以及作者的日期相对于现在:

{
  "git.blame.editorDecoration.template": "${主题}, ${作者姓名} (${作者日期前})"
}

要调整编辑器装饰的颜色,请使用git.blame.editorDecorationForeground主题颜色。

提交历史的图形视图

源控制视图中的源控制图提供了您的提交历史记录和分支关系的可视化表示。当您已配置远程存储库时,您可以查看您领先或落后于远程的提交次数。

该图包含当前分支、当前分支的上游分支以及一个可选的基分支。图的根是这些分支的公共祖先。

截图显示源代码控制图。

该图表提供了以下功能:

  • 选择一个条目以查看该提交中更改的文件。选择查看更改操作以在编辑器中查看提交的差异。
  • 右键单击提交以执行诸如检出、挑拣、将其添加为聊天上下文等操作。
  • 选择一个文件以在编辑器中查看该文件的差异。
  • 选择一个提交,并通过右键单击提交选择 比较与远程比较,或 与合并基比较

使用图形视图工具栏中的操作来选择分支、获取、拉取、推送和同步更改。

文件历史记录的时间轴视图

时间线视图位于文件资源管理器底部,是一个用于可视化文件事件历史的统一视图。例如,您可以在时间线视图中查看Git提交或本地文件保存。

时间线视图的截图,显示了文件提交历史记录。

了解更多关于时间轴视图的信息。

下一步