暂存和提交更改

创建重点突出的提交并附带清晰的描述,有助于您和您的团队了解代码库的历史。VS Code 提供了集成的 Git 工具,用于暂存更改和创建提交,并支持对要包含的更改进行精细控制。

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

Git 工作流程

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

可以将暂存视为准备工作快照。您可以一次性暂存所有更改以进行全面提交,也可以暂存特定文件,甚至是个别行,从而创建重点明确、符合逻辑的提交,以便日后更轻松地审查和理解。

查看更改

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

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

Screenshot of the Source Control view showing a modified and new file under Changes.

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

活动栏中的源代码管理图标也会显示一个带有受影响文件数量的徽章,让您可以快速概览未提交的更改。

提示

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

编辑器装订线指示器

为了帮助您快速识别文件中的更改,VS Code 会在编辑器中行号旁显示装订线指示器,以表示自上次提交以来添加、修改或删除的行。您还可以在小地图中查看这些指示器。

装订线颜色表示更改的类型:

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

当您选择装订线指示器时,会出现更改的内联差异预览。您可以使用相应的按钮直接从此预览中暂存或还原更改。

Screenshot of editor gutter indicators showing line changes and a hover showing Git blame information.

您可以通过以下设置自定义装订线指示器的行为:

  • scm.diffDecorations 在 VS Code 中打开 在 VS Code Insiders 中打开 :控制差异装饰何时出现(全部、装订线、概览、小地图或无)
  • scm.diffDecorationsGutterAction 在 VS Code 中打开 在 VS Code Insiders 中打开 :控制装订线菜单中可用的操作
  • scm.diffDecorationsGutterPattern 在 VS Code 中打开 在 VS Code Insiders 中打开 :自定义用于装订线装饰的模式
  • scm.diffDecorationsGutterVisibility 在 VS Code 中打开 在 VS Code Insiders 中打开 :控制何时显示装订线装饰(始终显示或悬停时显示)
  • scm.diffDecorationsGutterWidth 在 VS Code 中打开 在 VS Code Insiders 中打开 :设置装订线指示器的宽度
  • scm.diffDecorationsIgnoreTrimWhitespace 在 VS Code 中打开 在 VS Code Insiders 中打开 :在差异装饰中忽略空格更改

暂存更改

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

要暂存单个文件,请将鼠标悬停在 更改 列表中的文件上,然后选择 +(加号)图标,或者右键单击该文件并选择 暂存更改。您还可以将文件从 更改 部分拖放到 暂存的更改 部分以进行暂存。

Screenshot of staging changes in the Source Control view.

使用树状视图时,您可以直接暂存整个文件夹。要一次性暂存所有修改过的文件,请将鼠标悬停在 更改 标题上,然后选择 +(加号)图标。

命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中提供了更多专门的暂存操作。输入“Git: Stage”以查看文件暂存选项。

暂存特定行或代码块

除了暂存整个文件外,您还可以暂存文件的特定部分。部分暂存使您能够创建重点突出的提交。例如,如果您在同一个文件中进行了格式化更改和错误修复,则可以分别提交它们,并附上相应的提交信息。

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

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

  2. 选择您要暂存的行

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

    Screenshot of staging specific lines from the diff editor.

    您也可以右键单击所选内容并选择 暂存所选范围,或从命令面板运行 Git: 暂存所选范围

取消暂存更改

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

Screenshot of unstaging changes in the Source Control view.

同样,您也可以使用选择内容旁边装订线中的 取消暂存 按钮,从差异编辑器中取消暂存特定的行或代码块。

提交更改

一旦您暂存了更改,就可以创建一个提交以将它们保存到本地仓库。要创建提交,您需要编写描述更改的提交信息。此信息有助于您和其他人在审查提交历史时理解提交的目的。

编写提交信息

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

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

Screenshot of generating a commit message with AI.

如果您想编写包含多个段落的提交信息,可以使用完整编辑器而不是输入框。通过 git.useEditorAsCommitInput 在 VS Code 中打开 在 VS Code Insiders 中打开 设置启用此功能。当您在没有提交信息的情况下提交更改时,会打开一个新的编辑器选项卡供您编写信息。

提示

要在提交信息输入框获得焦点时循环查看以前的提交信息,请按 (Windows, Linux Up) (Windows, Linux Down)

使用编辑器编写提交信息

除了使用提交信息输入框外,您还可以在完整的编辑器选项卡中编写提交信息。这对于较长的信息或当您需要更多空间来撰写信息时非常有用。

  1. 在源代码管理视图中,在不输入信息的情况下选择 提交。这将打开一个名为 COMMIT_EDITMSG 的新编辑器选项卡。

    Screenshot of the COMMIT_EDITMSG editor for writing commit messages.

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

  3. 要接受提交信息并完成提交操作,请关闭编辑器选项卡或选择编辑器中的 提交

    Screenshot showing the commit message written in the COMMIT_EDITMSG editor, highlighting the Commit button.

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

    Screenshot showing the commit message written in the COMMIT_EDITMSG editor, highlighting the Cancel button.

要禁用使用编辑器编写提交信息并恢复为快速输入控件,请禁用 git.useEditorAsCommitInput 在 VS Code 中打开 在 VS Code Insiders 中打开 设置(需要重启 VS Code 以使更改生效)。

要对在集成终端中执行的 git commit 命令使用相同的流程,请启用 git.terminalGitEditor 在 VS Code 中打开 在 VS Code Insiders 中打开 设置(需要重启终端以使更改生效)。

AI 共同作者标注

当您提交 AI 辅助生成的代码时,VS Code 可以自动将 Co-authored-by: Git 尾部信息附加到您的提交信息中。这有助于您和您的团队跟踪哪些提交包含 AI 生成的贡献。

要启用此功能,请配置 git.addAICoAuthor 在 VS Code 中打开 在 VS Code Insiders 中打开 设置为以下值之一:

  • off(默认):不添加共同作者尾部信息
  • chatAndAgent:在使用 Copilot Chat 或代理模式生成的代码进行提交时添加该尾部信息
  • all:为所有 AI 生成的代码添加该尾部信息,包括内联补全

该尾部信息仅在您从 VS Code 内部提交时添加。使用外部 Git 工具或命令行进行的提交不包含该尾部信息。

来自提交尾部信息的共同作者信息也会显示在 Git blame 悬停工具提示中。

提交更改

在源代码管理视图中选择 提交 按钮,以提交 暂存的更改 部分中的更改。任何未暂存的更改将保留在 更改 部分,供未来提交使用。

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

修改上一次提交

如果您需要修改最近的一次提交,可以对其进行修改,而不是创建新的提交。这对于添加遗漏的更改或更正提交信息非常有用。

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

注意

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

撤消上一次提交

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

放弃更改

要彻底放弃未提交的更改并将文件恢复到上次提交的状态,请右键单击源代码管理视图中的文件并选择 放弃更改。或者,将鼠标悬停在 更改 列表中的文件上,然后选择放弃图标(向左的弯曲箭头)。

放弃的更改将移至回收站(Windows)或废纸篓(macOS/Linux),让您有机会在需要时恢复它们。

使用差异编辑器查看更改

差异编辑器显示了您文件中的更改内容。它并排显示原始版本和修改版本的对比。差异编辑器可以以并排或内联视图打开。

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

提示

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

并排视图与内联视图

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

Screenshot of the Diff Editor showing side-by-side changes between file versions.

通过选择 更多操作 (...) > 内联视图,切换到内联视图以在单个编辑器中查看更改。

Screenshot of the Diff Editor showing inline changes between file versions.

通过 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. 选择源代码管理视图中的 代码审查 按钮

    Screenshot of the Code Review button in the Source Control view.

  2. VS Code 会分析您的更改并生成审查意见和建议,这些内容会作为叠加注释出现在编辑器中

    Screenshot of the code review results, showing as editor overlay comments.

Git blame 信息

VS Code 可以在编辑器内和状态栏中显示 git blame 信息。悬停在状态栏项目或编辑器内联提示上,即可查看详细的 git blame 信息,包括来自提交的任何共同作者尾部信息。如果您启用了 AI 共同作者标注,blame 工具提示会为包含 AI 生成代码的提交显示 AI 共同作者。

要启用或禁用 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 blame 信息时忽略空格更改,请启用 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": "${subject}, ${authorName} (${authorDateAgo})"
}

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

提交历史记录的图形视图

源代码管理视图中的源代码管理图提供了提交历史记录和分支关系的直观表示。当您配置了远程仓库时,可以看到您领先或落后远程仓库多少次提交。

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

Screenshot showing the Source Control Graph.

该图提供以下功能:

  • 选择一个条目以查看在该提交中更改的文件。选择 打开更改 操作以在编辑器中查看提交的差异。
  • 右键单击提交以执行检出、拣选(cherry-pick)、将其作为上下文添加到聊天等操作。
  • 选择一个文件以在编辑器中查看该文件的差异。
  • 通过右键单击提交并选择 与...比较与远程比较与合并基准比较,选择一个提交并将其与另一个分支或标签进行比较。

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

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

时间轴视图(可通过文件资源管理器底部访问)是一个用于可视化文件事件历史记录的统一视图。例如,您可以在时间轴视图中查看 Git 提交或本地文件保存记录。

Screenshot of the timeline view showing file commit history.

详细了解时间轴视图

后续步骤

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