分期与更改

创建带有清晰描述的聚焦提交,有助于你和团队理解代码库的历史。VS Code 提供集成的 Git 工具用于临时变更和创建提交,并支持对包含哪些更改的细致控制。

本文介绍了VS Code中的预留和提交工作流程,从Git的两步流程到利用AI协助提交信息,再到提交前的修改审查。

Git 工作流程

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

把舞台布置想象成准备你作品的快照。你可以一次性分阶段所有更改,实现全面的提交,或者分阶段特定文件甚至单个行,创建聚焦且合乎逻辑的提交,便于后续审查和理解。

查看变更

源代码控制视图(⌃⇧G(Windows,Linux Ctrl+Shift+G)是你管理 Git 仓库变更的中心枢纽。变更根据其分阶段状态分为两个部分:

  • 变更:列出所有尚未提交的修改、添加或删除文件
  • 分阶段变更:列出已分阶段并准备提交的文件

源代码控制视图截图,显示修改后新增文件,在更改中。

注意更改文件旁边会标注“U”(未追踪)、“M”(修改)或“D”(已删除)图标,以表示更改类型。该变更指示器也显示在资源管理器视图和编辑标签标题中,针对修改文件。

活动栏中的源代码控制图标还会显示一个带有受影响文件数量的徽章,方便你快速查看未提交的更改。

提示

你可以查看平坦结构或树状结构的变更列表。通过“更多作”(...)>“查看并>排序”视图为树/列表选项切换到“更多作(...)中,查看并排序为树状/列表”。

编辑排水沟指示器

为了帮助你快速识别文件中的变更,VS Code 在编辑器中会在行号旁边显示排水沟指示器,表示自上次提交以来新增、修改或删除的行数。你也可以在小地图上看到这些指示。

排水沟颜色表示变化类型:

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

当你选择排水沟指示器时,会显示你更改的内联差速预览。你可以直接通过相应按钮在预览中分阶段或还原更改。

编辑器的排水槽指示器截图显示行变更,悬停显示Git指责信息。

您可以通过以下设置自定义排水沟指示器的行为:

  • scm.diff 勋章
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    :控制差异装饰的出现时间(全部、排水沟、概览、小地图或无)
  • scm.diff装饰排水沟动作
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    : 控制排水沟菜单中可用的作
  • scm.diff装饰排水沟图案
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    :自定义用于排水沟装饰的图案
  • scm.diff装饰排水沟可见性
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    :控制何时显示排水沟装饰(始终或悬停)
  • scm.diff装饰排水沟宽度
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    :设置排水沟指示器的宽度
  • scm.diff装饰忽略修剪空白
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    :忽略差异装饰中的空白变化

舞台变动

阶段变更可以让他们为下一次提交做准备。你可以分阶段整个文件或特定行代码块,实现更细致的控制。

要设置单个文件,请在更改列表中将鼠标悬停并选择+(加)图标,或右键点击文件并选择“阶段更改”。你也可以从“变更”部分拖动文件,放到“临时变更”中进行临时调整。

源控视图中分阶段变更的截图。

使用树状视图时,你可以通过对文件夹本身进行分级来分级整个文件夹。要一次性切换所有修改过的文件,请将鼠标悬停在“更改”头部,选择+(加)图标。

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

舞台专用台词或代码块

你也可以对文件的特定部分进行临时准备,而不是整个文件的临时阶段。部分分阶段让你能够创建有针对性的提交。例如,如果你在同一个文件中做了格式更改和修复错误,你可以分别提交并设置相应的提交信息。

你可以在差异编辑器中进行部分分段:

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

  2. 选择你想要分段的线路

  3. 在你选择的差异编辑器边框里,用“舞台”按钮只切换这些线条

    从差异编辑器中分段特定台词的截图。

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

Unstage的变化

要移除文件,请在“分级更改”列表中将鼠标悬停,选择“-(减)图标”,或右键点击“取消阶段更改”。文件会回到更改部分,但不会丢失你的修改内容。

源控视图中解除暂存更改的截图。

同样,你也可以在差异编辑器中,使用你选择旁边的排水槽中的Unstage按钮,解除特定台词或代码块的分段。

提交你的修改

一旦你完成了变更的分级,你可以创建一个提交文件,将它们保存到本地仓库。要创建提交,你需要写一条提交信息来描述这些更改。这条信息帮助你和其他人理解提交的目的,在查看提交历史时。

写提交信息

提交信息描述你所做的改变,帮助他人(以及未来的自己)理解提交的目的。在源控视图顶部的提交信息输入框中输入你的消息,选择提交以保存你的分阶段更改。

为了帮助你写提交信息,请在提交信息输入框中选择闪烁图标,利用AI根据你的分阶段修改生成消息。你可以创建自定义指令来引导AI生成消息。

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

如果你想写多段提交信息,可以用完整编辑器代替输入框。用

git.useEditorAsCommitInput
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境。当你提交更改但没有提交信息时,会打开一个新的编辑器标签页,让你写你的消息。

提示

要循环查看之前的提交信息,请在提交信息输入框中按Windows,Linux Up(Windows,Linux down)。

使用编辑器发送提交信息

你可以不用提交信息输入框,而是在完整的编辑器标签页里写提交信息。这对于长篇消息或需要更多空间来撰写信息非常有用。

  1. 在源控制视图中,选择提交,但无需在提交输入框中输入消息。这会打开一个新的编辑器标签页,名为COMMIT_EDITMSG.

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

  2. 在编辑器里写入你的提交信息。你可以使用多段,并根据需要调整信息格式。

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

    截图显示了COMMIT_EDITMSG编辑器中提交信息,高亮了提交按钮。

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

    截图显示COMMIT_EDITMSG编辑器中提交信息,高亮取消按钮。

要禁用编辑器发送提交信息并恢复快速输入控制,请禁用

git.useEditorAsCommitInput
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设置(重启 VS Code 以实现变更)。

使用相同的流程git提交在集成终端中执行的命令,使得

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

提交变更

在源控制器视图中选择提交按钮,在“阶段变更”部分提交更改。任何未分阶段的更改仍会留在“更改”部分,供未来提交使用。

要一次性提交所有更改(分阶段和非分阶段),请选择“更多作”(...)菜单,选择提交>提交全部。该程序将所有修改过的文件分阶段并提交为一步。

修改之前的提交

如果你需要修改最近的提交,可以修改它,而不是创建新的提交。这对于添加遗忘的更改或纠正提交信息非常有用。

要修改提交,请选择提交按钮下拉菜单,选择提交(修改),或使用更多作...)菜单中的提交阶段(修改)选项。

注释

只修改那些还没推送到共享仓库的提交。修改推送提交会重写历史,并可能给其他协作者带来问题。

撤销上次提交

如果你需要撤销上一次提交,请在源控制器视图中选择“更多作...)”菜单,然后选择提交>撤销最后一次提交。这会从你的分支历史中移除最后一次提交,但保留该提交的所有变更在“阶段变更”部分。

弃牌变化

要完全丢弃未提交的更改并将文件恢复到最后提交状态,请在源控制器视图中右键点击该文件并选择“丢弃更改”。或者,将鼠标悬停在更改列表中的文件上,选择丢弃图标(指向左侧的弧形箭头)。

丢弃的更改会被移到回收站(Windows)或垃圾桶(macOS/Linux),这样你就有机会在需要时恢复它们。

用差异编辑器审查变更

差异编辑器会显示你文件中发生了哪些变化。它展示了原始版本与修改版本的并排对比。差分编辑器可以并列或内联视图打开。

要打开差异编辑器,请在源代码控制视图中的“变更”或“预设变更”列表中选择任意文件,查看该文件与上次提交版本的变更。

提示

对于大型文件,可以通过在差别编辑器工具栏中选择“折叠未更改区域”按钮来折叠未更改的部分。这有助于你专注于实际的变化。你还可以使用“下一个更改”和“上一个更改”按钮快速切换更改。

并排视图与内联视图

默认情况下,差异编辑器会显示左侧原始文件和右侧修改后的并排对比。

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

通过选择“更多作”>“在线视图”切换到内联视图,可在不同编辑器工具栏中查看内嵌编辑内的更改。

Diff编辑器截图显示文件版本间的内联变更。

用以下条件配置你偏好的默认视图

diffEditor.renderSideBySide
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境。

从差分编辑器中切换并回退

差异编辑器包含一个带有StageRevert按钮的下水槽,每个变更旁边都有按钮。这些按钮可以让你:

  • 从差分视图直接分段单个代码块或代码行进行分段处理
  • 在不影响其他修改的情况下还原特定更改

如果你在差别编辑器中选择特定线条,按钮只会根据你的选择作。

你可以用

diffEditor.renderGutterMenu
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境。

可访问差分查看器

对于屏幕阅读器用户,VS Code 提供了可访问差分查看器,以统一的音色格式呈现变更。要打开可访问的差分查看器,请使用差分编辑器工具栏中的“更多作...)”菜单,选择“打开可访问的差分查看器”或使用F7键盘快捷键。

通过“切换到下一个差异”(F7)和“返回上一个差异”()命令来导航更改。

用AI审查代码变更

VS Code 允许你在提交前通过 AI 辅助审查未承诺的更改。这些AI功能补充了人工代码审查,帮助你在开发流程中及早发现问题。

要对未提交的更改进行AI驱动的代码审查:

  1. 在源代码控制视图中选择代码审查按钮

    源代码控制视图中代码审查按钮的截图。

  2. VS Code 会分析你的更改,生成审核评论和建议,这些评论会以叠加评论的形式出现在编辑器中

    代码审查结果截图,显示为编辑器叠加评论。

推卸责任信息

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

要启用或禁用git blame信息,可以使用Git: Toggle Git Blame Editor DecorationGit: Toggle Git Blame Status Bar Item命令,或配置以下设置:

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

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

git.blame.ignoreWhitespace
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境。

你可以自定义编辑器和状态栏中显示的消息格式,并使用

git.blame.editorDecoration.template
  • 在VS代码中打开
  • 在VS Code Insiders中开放
以及
git.blame.statusBarItem.template
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设定。你可以用变量来获取最常见的信息。

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

{
  "git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}

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

提交历史的图视图

源控制视图中的源控图提供了提交历史和分支关系的可视化表示。当你配置好远程仓库时,可以看到你领先或落后于远程仓库的提交次数。

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

显示源控图的截图。

该图提供了以下功能:

  • 选择一个条目以查看该提交中被更改的文件。选择“打开更改”作,在编辑器中查看提交的差异。
  • 右键点击提交内容即可执行结账、挑选、将其作为聊天上下文添加等作。
  • 选择一个文件,在编辑器中查看该文件的差异。
  • 选择提交,右键点击提交并选择“远程”或与合并基址比较”,与另一个分支或标签进行比较。

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

文件历史时间线视图

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

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

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

下一步