2026/4/18 12:20:33
网站建设
项目流程
浙江可以做会计题目的网站,甘孜建设网站首页,网页注册qq,公司起名网是什么
git rebase “把当前分支整个搬家#xff0c;插到另一条分支的最新提交后面”#xff0c;让历史看起来是一条直线#xff0c;没有分叉。
图解
初始状态#xff08;feature 从 master 的 B 开出#xff0c;又多了 C、D#xff1b;master 那边又走了 E、F#xff…是什么git rebase “把当前分支整个搬家插到另一条分支的最新提交后面”让历史看起来是一条直线没有分叉。图解初始状态feature 从 master 的 B 开出又多了 C、Dmaster 那边又走了 E、F复制A—B—E—F ← masterC—D ← featuremerge 的效果保留分叉复制A—B—E—F—M ← master\ /C—D ← featurerebase 的效果把 C、D 整体“剪下来”贴到 F 后面并生成全新 C’、D’复制A—B—E—F—C’—D’ ← feature↑历史成一条线没有 merge 提交常用场景本地 feature 分支落后主分支想同步最新代码又不要 merge 提交复制git checkout featuregit rebase master整理脏提交git rebase -i HEAD~3 # 合并/改消息/删除见上文合并 PR/MR 时保持主分支线性历史GitHub 的 “Rebase and merge” 按钮。代价 注意改写历史rebase 后提交的 hash 全变已 push 过的分支必须强推 (–force-with-lease)。多人协作时强推会扰乱同事不要在公共分支上 rebase只在自己尚未共享的 feature 分支上玩。口诀“rebase 是搬家merge 是搭桥搬家改门牌搭桥留路口。”具体好处历史“无分叉”merge 会留下一个“合并提交”merge commit多分支并行久了就成了“铁路图”rebase 把分支“搬家”后看上去像顺序开发review 时一眼到底。代码 review 更轻松GitHub/GitLab 的 PR/MR 界面里线性历史能让改动按真正时间顺序排列不会穿插大量“Merge branch ‘master’ into xxx”噪音。回退、bisect 更方便git bisect 二分查找 bug 时线性历史每次编译点都是可运行状态merge 提交点常常编译不过增加排查成本。可以“整理脏提交”git rebase -i 让你把“WIP”、“fix typo”、“oops” 压缩成一条优雅提交再合并进主分支保持主库提交都是“一个 feature 一条记录”。避免无意义的合并冲突先 rebase master 再提 PR能把冲突在本地一次性解决而不是等合并时让 CI/同事踩坑。代价与边界改写历史必须强推公共分支上严禁 rebase会踩到同事。一旦 rebase 完旧提交的 hash 全部失效引用旧 hash 的文档、issue 会断链。口诀“私有分支随意搬家公共分支只搭桥不搬家。”这就是 rebase 存在的理由让“对外历史”整洁让“对内开发”灵活。demo ——修改当前分支提交历史首先备份一份最新的版本 放到其他目录 防止改崩git rebase -i HEAD~10然后会进入vimpick a1b2c3 第一个提交信息 pick d4e5f6 第二个提交信息 pick g7h8i9 第三个提交信息只保留第一条 其他最前面全部改成squashpick a1b2c3 第一个提交信息 squash d4e5f6 第二个提交信息 squash g7h8i9 第三个提交信息然后wq保存之后看提示 关注source状态 可能编辑提交信息之后确认即可然后就发现 当前分支变成只有一个提交记录了之后强推即可过程中间会一个游离分支如果一半不想改了 也可以取消