GitLens 可视化 Rebase 全攻略VS Code 版一、先搞懂Rebase 到底是干啥的1. 一句话核心定义Rebase变基 把当前分支的所有提交「搬家」到目标 commit 后面改写提交历史让分支历史线变直。本质不改变代码内容只改变提交的顺序和起点核心作用整理提交历史、同步最新代码、合并多个提交2. 两个核心 Rebase 操作操作作用适用场景Rebase Current Branch onto Commit...把当前分支的所有提交挪到你选中的 commit 后面同步最新代码、重置分支起点Interactive Rebase交互式变基可以对分支上的提交做合并、修改、删除、重排序合并多个提交、整理提交历史二、操作1Rebase Current Branch onto Commit...详解1. 操作入口在 GitLens 的COMMITS面板右键任意一个 commit选择Rebase Current Branch onto Commit...2. 大白话原理假设你的分支结构是这样release_20260115: ... → 合并分支 → fix → pref → refactor当前分支的公共历史 ↘ release_20260115 本地: 首次提交 → 第二次 → 第三次 → 第四次你自己的4个提交你右键选中refactor这个 commit执行这个操作Git 会把你本地的 4 个提交从原来的位置摘下来重新「接在」refactor后面最终历史线变成一条直线... → refactor → 首次提交 → 第二次 → 第三次 → 第四次代码内容完全不变只是 commit ID 会变因为历史被改写了3. 适用场景你自己的功能分支需要同步release/daily分支的最新代码分支起点落后需要把自己的提交挪到最新的公共 commit 后面整理分支历史让提交线更干净4. 避坑红线绝对不能踩❌绝对不要在公共分支release/daily/master上用公共分支是团队共享的变基会改写历史导致其他人的代码冲突、分支混乱。✅仅用于自己的私有功能分支比如feature/xxx三、操作2交互式 Rebase合并提交核心操作1. 操作入口方式1GitLens 菜单 →Rebase→Interactive Rebase方式2命令行执行git rebase -i commitID会自动打开 GitLens 可视化界面就是你之前的截图2. 界面核心操作6个核心命令你会看到一个提交列表每个提交前面都有一个下拉框对应 Git 的变基命令命令缩写作用适用场景pickp保留该提交按原顺序执行作为合并的基准提交squashs把该提交合并到上一个提交合并多个碎提交为一个rewordr只修改提交信息不改变代码修正提交说明edite暂停变基修改该提交的代码修正某个提交的代码fixupf合并到上一个提交丢弃自己的提交信息快速合并小修复dropd删除该提交彻底删除某个提交3. 实战把4个提交合并成1个步骤1打开交互式变基右键这4个提交的起点 commit要合并的首个提交的上一个提交记录选择Rebase Current Branch onto Commit…→ 勾选Interactive或者直接执行git rebase -i HEAD~4合并最近4个提交步骤2修改提交命令需要注意 Oldest first 开关开启则时间倒序第一次提交在上面关闭则时间正序第一次提交记录在下面最新的提交在上面和左侧面板commit一致也是常见的排序方案第1个提交首次提交保持pick作为合并基准第2-4个提交后续提交全部改成squash合并到上一个步骤3点击START REBASE进入提交信息编辑页把原来的4条说明删掉写一句干净的最终说明保存后4个提交就会合并成1个干净的提交步骤4推送远程已推送的分支如何这4个提交没有推送到远程直接push即可如果已经推送到远程合并后需要强制推送仅自己分支可用gitpush origin release_20260115-f四、Rebase 常见问题与故障处理1. 变基中途冲突了怎么办解决冲突后执行git rebase --continue继续变基想放弃变基执行git rebase --abort完全无损代码回到变基前2. 变基后远程分支报错报错rejected是因为本地历史和远程历史不一致解决强制推送仅自己分支git push origin 分支名 -f绝对不要在公共分支上强制推送3. 怎么取消变基可视化界面直接点ABORT命令行git rebase --abort4. 变基和 Merge 的区别核心对比操作原理历史线适用场景Merge把两个分支的代码合并生成一个新的 merge commit分叉历史保留所有提交公共分支合并团队协作Rebase把分支提交挪到目标分支后面改写历史直线历史干净整洁自己的功能分支同步代码、整理历史五、一句话总结Rebase Current Branch onto Commit... 把分支「搬家」到目标 commit 后面历史线变直交互式 Rebase 可视化修改提交历史核心用squash合并多个提交公共分支release/daily/master绝对不能变基仅自己的 feature 分支可用