暂存和提交更改
创建具有清晰描述的专注提交有助于你和你的团队理解代码库的历史。VS Code 提供集成的 Git 工具用于暂存更改和创建提交,并支持对要包含的更改进行精细控制。
本文介绍了 VS Code 中的暂存和提交工作流,从 Git 的两步流程到使用 AI 辅助编写提交消息以及在提交前审阅更改。
Git 工作流
Git 使用一个两步流程来保存你的工作:暂存和提交。当你修改文件时,Git 会跟踪这些更改,但不会自动将它们包含在下一次提交中。暂存允许你选择要在每次提交中包含哪些更改。
将暂存想象成准备工作快照。你可以一次性暂存所有更改以进行一次全面的提交,或者暂存特定文件甚至单个行以创建专注、逻辑化的提交,这些提交在以后更容易审阅和理解。
查看更改
源代码管理视图(⌃⇧G (Windows, Linux Ctrl+Shift+G))是管理 Git 存储库中更改的中心枢纽。更改根据其暂存状态分为两个部分
- 更改:列出了所有尚未暂存提交的已修改、添加或删除的文件
- 已暂存更改:列出了已暂存并准备好提交的文件

请注意,已更改的文件旁边会显示“U”(未跟踪)、“M”(已修改)或“D”(已删除)图标,以指示更改的类型。此更改指示器也显示在资源管理器视图和已修改文件的编辑器选项卡标题中。
活动栏中的源代码管理图标还会显示一个带有受影响文件数量的徽章,以便你快速概览未提交的更改。
你可以以平面或树状结构查看更改列表。通过在源代码管理视图工具栏中选择“更多操作”(...)> **视图和排序** > **视图为树/列表** 来切换此选项。
编辑器装订线指示器
为了帮助你快速识别文件中的更改,VS Code 会在编辑器中行号旁边显示装订线指示器,以表示自上次提交以来添加、修改或删除的行。你也可以在小地图中看到这些指示器。
装订线颜色指示了更改的类型
- 绿色条:自上次提交以来添加的新行
- 蓝色条:自上次提交以来修改的行
- 红色三角形:删除的行(显示在删除点上方)
当你选择装订线指示器时,会显示更改的内联 diff 预览。你可以使用相应的按钮直接从此预览中暂存或撤销更改。

你可以使用以下设置来自定义装订线指示器行为
- scm.diffDecorations:控制 diff 装饰何时出现(全部、装订线、概览、小地图或无)
- scm.diffDecorationsGutterAction:控制装订线菜单中可用的操作
- scm.diffDecorationsGutterPattern:自定义用于装订线装饰的模式
- scm.diffDecorationsGutterVisibility:控制何时显示装订线装饰(始终显示或悬停时显示)
- scm.diffDecorationsGutterWidth:设置装订线指示器的宽度
- scm.diffDecorationsIgnoreTrimWhitespace:在 diff 装饰中忽略空格更改
暂存更改
暂存更改可将它们准备好添加到你的下一次提交中。你可以暂存整个文件或特定行和代码块,以进行更精细化的控制。
要暂存单个文件,请在“更改”列表中将鼠标悬停在其上方并选择“+”(加号)图标,或者右键单击文件并选择“暂存更改”。你也可以将文件从“更改”部分拖放到“已暂存更改”部分以暂存它们。

当使用树状视图时,你可以通过暂存整个文件夹来暂存整个文件夹。要一次性暂存所有修改过的文件,请将鼠标悬停在“更改”标题上并选择“+”(加号)图标。
在命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中有更多专门的暂存操作。键入“Git: Stage”以查看暂存文件的选项。
暂存特定行或代码块
除了暂存整个文件,你还可以暂存文件的特定部分。部分暂存使你能够创建专注的提交。例如,如果你在同一个文件中进行了格式更改和 bug 修复,你可以分别提交它们,并附带适当的提交消息。
你可以从 diff 编辑器执行部分暂存
-
在“更改”列表中选择一个文件以打开diff 编辑器
-
选择要暂存的行
-
使用 diff 编辑器装订线旁边的“暂存”按钮来仅暂存这些行

你也可以右键单击选中的区域,然后选择“暂存选定范围”,或者从命令面板运行“Git: 暂存选定范围”。
取消暂存更改
要从暂存中移除文件,请在“已暂存更改”列表中将鼠标悬停在其上方并选择“-”(减号)图标,或者右键单击并选择“取消暂存更改”。文件会移回“更改”部分,而不会丢失你的修改。

同样,你也可以使用 diff 编辑器中选定区域旁边的装订线中的“取消暂存”按钮来取消暂存特定的行或代码块。
提交你的更改
一旦你暂存了更改,就可以创建提交将其保存到本地存储库。要创建提交,你需要编写一个描述更改的提交消息。这条消息有助于你和其他人在审阅提交历史时理解提交的目的。
编写提交消息
提交消息描述了你正在提交的更改,并帮助他人(以及未来的你)理解提交的目的。在源代码管理视图顶部的提交消息输入框中键入你的消息,然后选择“提交”来保存你的暂存更改。
为了帮助你编写提交消息,请在提交消息输入框中选择闪烁图标,以使用 AI 根据你暂存的更改生成消息。你可以创建自定义说明来指导 AI 生成消息。

如果你想编写多段提交消息,可以使用完整的编辑器而不是输入框。通过git.useEditorAsCommitInput设置启用此功能。当你提交更改而没有提交消息时,会打开一个新的编辑器选项卡供你编写消息。
要循环浏览你之前的提交消息,请在焦点在提交消息输入框时按↑ (Windows, Linux Up)和↓ (Windows, Linux Down)。
使用编辑器编写提交消息
而不是使用提交消息输入框,你可以在完整的编辑器选项卡中编写提交消息。这对于较长的消息或当你想要更多空间来撰写消息时很有用。
-
在源代码管理视图中,在提交输入框中不输入消息而选择“提交”。这会打开一个名为 `COMMIT_EDITMSG` 的新编辑器选项卡。

-
在编辑器中编写你的提交消息。你可以使用多个段落并根据需要格式化消息。
-
要接受提交消息并完成提交操作,请关闭编辑器选项卡或在编辑器中选择“提交”。

-
要取消提交操作,你可以清除文本编辑器的内容并关闭编辑器选项卡,或者在编辑器中选择“取消 (
X)”。
要禁用使用编辑器编写提交消息并将回退到快速输入控件,请禁用git.useEditorAsCommitInput设置(更改需要重启 VS Code 后生效)。
要对集成终端中执行的 `git commit` 命令使用相同的流程,请启用git.terminalGitEditor设置(更改需要重启终端后生效)。
提交更改
在源代码管理视图中选择“提交”按钮来提交“已暂存更改”部分中的更改。任何未暂存的更改都保留在“更改”部分,以供后续提交使用。
要一次性提交所有更改(已暂存和未暂存),请选择“更多操作”(...)菜单,然后选择“提交”> “全部提交”。这会一步暂存并提交所有已修改的文件。
修改上一次提交
如果你需要修改最近的提交,可以修改它,而不是创建新提交。这对于添加遗漏的更改或更正提交消息很有用。
要修改提交,请选择“提交”按钮下拉菜单并选择“提交(修改)”,或者使用“更多操作”(...)菜单中的“暂存提交(修改)”选项。
仅修改尚未推送到共享存储库的提交。修改已推送的提交会重写历史,并可能给其他协作者带来问题。
撤销上一次提交
如果你需要撤销上一次提交,请在源代码管理视图中选择“更多操作”(...)菜单,然后选择“提交”> “撤销上一次提交”。这会将上一次提交从你的分支历史中移除,但会保留该次提交的所有更改,并将其暂存到“已暂存更改”部分。
丢弃更改
要完全丢弃未提交的更改并将文件恢复到其最后提交的状态,请在源代码管理视图中右键单击文件并选择“丢弃更改”。或者,将鼠标悬停在“更改”列表中的文件上,然后选择丢弃图标(一个指向左边的弯曲箭头)。
丢弃的更改会被移至回收站(Windows)或废纸篓(macOS/Linux),让你有机会在需要时恢复它们。
使用 diff 编辑器审阅更改
diff 编辑器显示了你文件中的更改。它会并排显示原始版本和修改版本的比较。diff 编辑器可以并排或内联视图打开。
要打开 diff 编辑器,请在源代码管理视图的“更改”或“已暂存更改”列表中选择任何文件,以查看该文件与上次提交版本之间的差异。
对于大文件,通过选择 diff 编辑器工具栏中的“折叠未更改区域”按钮来折叠未更改的部分。这有助于你专注于实际更改。你还可以使用“下一个更改”和“上一个更改”按钮在更改之间快速导航。
并排视图与内联视图
默认情况下,diff 编辑器显示一个并排比较,左侧是原始文件,右侧是你的更改。

通过选择 diff 编辑器工具栏中的“更多操作”(...)> **内联视图** 来切换到内联视图,以便在一个编辑器中查看更改。

使用diffEditor.renderSideBySide设置配置你首选的默认视图。
从 diff 编辑器暂存和撤销
diff 编辑器包含一个装订线,在每个更改旁边都有“暂存”和“撤销”按钮。这些按钮允许你
- 直接从 diff 视图暂存单个代码块或行
- 撤销特定更改而不影响其他修改
如果你在 diff 编辑器中选择了特定的行,按钮将仅对你的选区操作。
你可以使用diffEditor.renderGutterMenu设置隐藏 diff 编辑器装订线。
可访问的 diff 查看器
对于屏幕阅读器用户,VS Code 提供可访问的 diff 查看器,它以统一的补丁格式显示更改。要打开可访问的 diff 查看器,请使用 diff 编辑器工具栏中的“更多操作”(...)菜单并选择“打开可访问的 diff 查看器”,或者使用F7键盘快捷键。
使用“转到下一个差异”(F7)和“转到上一个差异”()命令在更改之间导航。
使用 AI 审阅代码更改
VS Code 能够使用 AI 辅助来审阅你未提交的更改,然后再提交它们。这些 AI 功能是对手动代码审阅的补充,有助于在开发工作流早期发现问题。
执行 AI 驱动的代码审阅以检查未提交的更改
-
在源代码管理视图中选择“代码审阅”按钮

-
VS Code 分析你的更改,并生成审阅评论和建议,这些评论和建议会作为叠加注释显示在编辑器中

Git blame 信息
VS Code 可以在编辑器和状态栏中内联显示 git blame 信息。将鼠标悬停在状态栏项或编辑器内联提示上以查看详细的 git blame 信息。
要启用或禁用 git blame 信息,请使用“Git: 切换 Git Blame 编辑器装饰”和“Git: 切换 Git Blame 状态栏项”命令,或配置以下设置
你可以使用 `git.blame.editorDecoration.template` 和 `git.blame.statusBarItem.template` 设置来定制在编辑器和状态栏中显示的消息格式。你可以使用变量来表示最常见的信息。
例如,以下模板显示了提交的主题、作者姓名以及相对于现在的作者日期
{
"git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}
要调整编辑器装饰的颜色,请使用 `git.blame.editorDecorationForeground` 主题颜色。
提交历史的图表视图
源代码管理视图中的源代码管理图表提供了你提交历史和分支关系的直观表示。当配置了远程存储库时,你可以看到你比远程领先或落后多少次提交。
图表中包含当前分支、当前分支的上游分支以及可选的基础分支。图表的根是这些分支的共同祖先。

图表提供以下功能
- 选择一个条目以查看该提交中已更改的文件。选择“打开更改”操作以在编辑器中查看提交的 diff。
- 右键单击提交以执行签出、变基、将其添加为聊天上下文等操作。
- 选择一个文件以在编辑器中查看该文件的 diff。
- 选择一个提交,然后右键单击该提交并选择“与…比较”、“与远程比较”或“与合并基础比较”,以将其与其他分支或标签进行比较。
使用图表视图工具栏中的操作来选择分支、获取、拉取、推送和同步更改。
文件历史的时间线视图
时间线视图位于文件资源管理器底部,是一个用于可视化文件事件历史的统一视图。例如,你可以在时间线视图中查看 Git 提交或本地文件保存。

详细了解时间线视图。
后续步骤
- 分支和工作区 - 了解分支管理、Git 工作区和 stash 操作
- 存储库和远程 - 了解克隆、发布和与远程存储库同步
- 合并冲突 - 处理合并分支时的冲突
- 使用 GitHub - 了解如何使用拉取请求和问题
- VS Code 中的 Copilot - 发现更多 AI 驱动的开发功能