vscode中暂存部分代码需选中目标行后右键选择“stage selected ranges”;该操作仅暂存选中范围,未选中修改保留在工作区,避免误提交整文件。

VSCode 内置 Git 面板完全够用,但多数人只用了不到 30% 的功能——真正提效的关键不在“会不会点”,而在“什么时候该用哪个操作、不选哪个”。
怎么快速暂存部分代码而不是整个文件
单个文件里改了多处,但只想提交其中几行(比如只提交修复逻辑,不提交调试 console.log)?靠手动删再恢复太危险,也容易漏。
- 在编辑器中用鼠标拖选目标代码块,或按住
Cmd(Mac)/Ctrl(Win)多选不连续行 - 右键 → Stage Selected Ranges(不是“Stage Changes”)
- 注意:这个操作只影响当前选中范围,未选中的修改仍留在“CHANGES”区,不会被误提交
- 常见错误:点了“Stage Changes”后才发现不该全提交,只能用
git reset HEAD <file></file>回退——VSCode 里没有一键“反暂存部分”的 UI,得靠命令行补救
切换分支前必须检查的两个状态
VSCode 不会阻止你在有未暂存/已暂存更改时切换分支,但它会静默失败或报错,导致你以为切过去了,其实还在原分支。
批量替换指定目录下所有 Git 仓库的远程地址(remote URL)。 当用户需要将 Git 仓库从一个服务器迁移到另一个服务器时使用。 触发词:git remote 替换、git url 批量修改、git 仓库迁移、更换 git 地址、批量修改 remote url。
- 先看源代码管理面板顶部是否显示
There are uncommitted changes或Unstaged Changes - 再确认“STAGED CHANGES”区域是否为空——哪怕只有一行
package-lock.json被暂存,切换分支也可能被拒绝 - 安全做法:要么
git stash(VSCode 里叫“暂存更改”),要么提前提交到临时分支;别依赖“切换时自动 stash”,那个选项默认是关的,且开启后也不处理已暂存内容 - 真实坑点:你切到
main分支后发现代码没变,其实是 VSCode 没刷新视图——关掉再重开文件夹,或执行Git: Refresh命令
为什么“同步”按钮有时比“推送”更危险
“同步” = pull + push,看似省事,但它的 pull 是无条件合并(git pull --ff-only 以外的行为),一旦远程有你本地没有的提交,就可能触发自动合并提交(merge commit)。
- 如果你正在 feature 分支上工作,而同事刚往
main推了新提交,“同步”会把那条提交拉下来并自动 merge 进你的分支——这会污染你的提交历史 - 正确姿势:先
Git: Pull(或Git: Fetch+ 手动rebase),确认无冲突、无意外变更后再Git: Push - VSCode 设置里可以关掉“同步”按钮:在
settings.json中加"git.enabled": false并禁用Git: Sync快捷键,强迫自己分步操作 - 性能影响:大型仓库下,“同步”会卡住 UI 几秒,因为要等
pull完成才开始push,而分开操作可随时中断
解决合并冲突时别跳过“合并编辑器”
冲突文件列表里点“接受当前更改”或“接受传入更改”看起来快,但极易丢逻辑——尤其是当双方都改了同一函数的相邻几行时。
- 双击冲突文件,VSCode 会自动打开内联合并编辑器(三栏布局:LEFT = 当前分支,RIGHT = 传入分支,CENTER = 合并结果)
- 每一块冲突上方有小按钮:
Accept Current/Accept Incoming/Accept Both——最后一个是关键,它保留双方改动并插入分隔符,方便你手动清理 - 别信“自动解决”提示:VSCode 的自动合并只基于行号,不理解语义;
if (a) { x++ }和if (a) { y++ }在同一位置会被强行合并成语法错误 - 改完后务必检查 CENTER 区域是否还有
最常被忽略的是:VSCode 的 Git 状态栏(左下角分支名旁)显示的“ahead/ahead-behind”数字,不是实时的。它只在你打开源代码管理面板、或执行一次 Git: Fetch 后更新。靠它判断是否该 push,容易推错版本。










