当前位置:首页 > 文章列表 > 文章 > 软件教程 > VS Code Source Control 怎样只提交选中的行

VS Code Source Control 怎样只提交选中的行

来源:17golang原创 2026-10-24 19:55:51 0浏览 收藏

可以。VS Code 的 Source Control 支持在文件差异中只暂存选中的代码行:先从 Changes 打开目标文件,选中要进入本次提交的改动范围,再执行 Stage Selected Ranges。选中的范围会进入 Staged Changes,没有选中的修改仍留在 Changes,最后点击 Commit 时只记录已暂存的那一部分。

官方地址:https://code.visualstudio.com/docs/sourcecontrol/staging-commits

本文按“格式调整和功能修改混在同一个文件里”的场景演示。文中的界面图是原创操作示意图,不是 VS Code 的实际截图;菜单、面板和状态名称按官方 Source Control 文档组织。

先分清暂存、提交和推送

动作作用是否写入本地提交历史是否上传远程仓库
Stage选择下一次提交要包含的文件或代码范围否否
Commit把当前已暂存快照记录到本地 Git 历史是否
Push把本地提交发送到远程仓库不新增本地提交是

所以“只提交选中的行”实际分成两步:先用部分暂存挑出范围,再提交暂存区。仅仅在编辑器里选中文字不会改变 Git 的提交内容;选区必须配合 Diff Editor 的 Stage 操作才会生效。

第一步:从 Source Control 找到待处理文件

  1. 先保存文件,然后点击左侧 Activity Bar 的 Source Control 图标;也可以使用默认快捷键 Ctrl+Shift+G(macOS 为 Control+Shift+G)打开源代码管理视图。
  2. 在侧栏的 Changes 分组中找到目标文件。这里列出的是尚未暂存的修改,文件旁的状态标记通常能提示它是新增、修改还是删除。
  3. 点击目标文件名称,打开 Diff Editor。不要直接在普通编辑器里选一段文本后就提交,因为普通编辑器的选择不会自动变成暂存范围。
原创 VS Code 风格界面说明图,展示从源代码管理的 Changes 打开 Diff Editor 并选中目标改动范围
图1:从 Source Control 打开 Diff Editor 并选中目标改动范围的原创操作示意图,不是实际软件截图。

进入 Diff Editor 后,左侧是基准内容,右侧是当前工作区改动。部分暂存时主要操作右侧的变更区域:选中一段完整改动,准备让这段内容进入下一次提交。

第二步:在 Diff Editor 中选中要提交的行

  1. 在右侧改动区域按住鼠标拖选需要提交的连续行。选区应覆盖完整的逻辑改动,例如一组函数修改或一段配置调整;不要把一行的缩进和另一组无关改动混在同一选区中。
  2. 把鼠标移动到选区附近的 Diff Editor gutter。VS Code 会显示与当前范围对应的暂存操作;如果暂存按钮没有出现,先确认你打开的是 Changes 下的未暂存差异,而不是 Staged Changes 下的已暂存差异。
  3. 需要用菜单操作时,在选区上点击右键,选择 Stage Selected Ranges。也可以打开命令面板(Ctrl+Shift+P,macOS 为 Command+Shift+P),运行 Git: Stage Selected Ranges。

这里的“Selected Ranges”是差异范围,不是任意文本复制选区。只有在 Git 差异编辑器的上下文中执行这个命令,VS Code 才会把选区转换成暂存区内容。

第三步:执行 Stage Selected Ranges

完成操作后,先不要急着提交,回到 Source Control 侧栏检查可见状态:

  1. 已选中的范围应进入 Staged Changes,或者让目标文件在该分组下出现。
  2. 同一个文件仍可能出现在 Changes 中。这不是重复文件,而是说明它还有另一部分修改没有暂存。
  3. 再次点击 Staged Changes 下的文件,可以查看“下一次提交将包含什么”;点击 Changes 下的同名文件,可以查看“仍留在工作区的内容”。
原创 VS Code 风格界面说明图,展示同一文件同时出现在 Changes 和 Staged Changes 的部分暂存状态
图2:部分暂存后的双列表验收状态说明图,同一文件的两份改动快照分别保留;不是实际软件截图。

官方文档允许一个文件同时出现在两个列表中:先暂存一组修改,再继续编辑同一文件,就会形成已暂存快照和未暂存快照。这个状态正是“只提交选中的行”成功后的重要信号。

第四步:填写提交信息并提交

  1. 在 Source Control 视图顶部的提交信息框中,填写能描述已暂存内容的短句,例如“拆分配置读取逻辑”。提交信息应对应已经放入 Staged Changes 的部分,不要把尚未暂存的另一组工作也写进描述。
  2. 点击 Commit。提交完成后,已暂存范围会从待提交列表中消失,并进入本地 Git 历史;未暂存范围仍会留在 Changes 中。
  3. 如果还要上传远程仓库,再单独执行 Push 或同步操作。提交成功不等于已经推送。

验收时只看两件事:本地提交的差异里包含目标范围,工作区的 Changes 里仍保留未选中的修改。不要用“文件不再出现在 Changes”作为唯一判断,因为一个文件全部暂存时才会离开该分组,部分暂存时它可以同时出现在两个分组。

选错范围时怎样撤回

如果发现暂存范围选错了,在 Staged Changes 中找到文件并执行 Unstage Changes,或者使用文件旁的减号按钮。这样会把内容从暂存区移回 Changes,但不会删除工作区修改。

不要把 Unstage Changes 和 Discard Changes 混用:前者只改变“下一次提交包含什么”,后者会丢弃工作区中的修改。涉及丢弃操作前,先确认内容已经不需要保留。

常见问题

为什么右键菜单里没有 Stage Selected Ranges?

先确认当前文件来自 Git 仓库,并且打开的是 Source Control 的 Changes 差异编辑器。普通编辑器、未识别的 SCM 提供程序或已暂存差异,都可能没有这个上下文菜单;此时可从命令面板搜索 Git: Stage Selected Ranges。

部分暂存后同一个文件出现两次,是不是产生了副本?

不是。它仍是同一个工作区文件,只是 Git 同时展示了两份状态:Staged Changes 是下一次提交的快照,Changes 是暂存之后还留在工作区的改动。

暂存了选中行,后来又修改了同一行怎么办?

再次修改会形成新的未暂存差异。提交前重新查看两个分组;如果新修改也要进入同一提交,就在当前差异中再次选择并执行部分暂存。

Stage 后能直接在远程仓库看到吗?

不能。Stage 只更新本地暂存区,Commit 才写入本地历史,Push 才会把已有提交发送到远程仓库。

最后确认

在 VS Code 中只提交选中的行,固定路径是:Source Control → Changes → 打开 Diff Editor → 选中改动范围 → Stage Selected Ranges → 检查 Staged Changes → Commit。部分暂存完成后,同一文件同时出现在 Changes 和 Staged Changes 是正常状态;确认这一点,再把暂存、提交和推送分别处理,就能把同一文件里的两类修改拆成清晰的提交。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
VS Code dev containers 怎样让容器复用宿主机 SSH agentVS Code dev containers 怎样让容器复用宿主机 SSH agent
上一篇
VS Code dev containers 怎样让容器复用宿主机 SSH agent
VS Code extensions 扩展宿主高占用时怎样定位扩展
下一篇
VS Code extensions 扩展宿主高占用时怎样定位扩展
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    661次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    681次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    727次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    695次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    528次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码