news 2026/4/3 6:05:57

git rebase

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
git rebase

是什么

git rebase = “把当前分支整个搬家,插到另一条分支的最新提交后面”,让历史看起来是一条直线,没有分叉。
图解
初始状态(feature 从 master 的 B 开出,又多了 C、D;master 那边又走了 E、F):
复制
A—B—E—F ← master

C—D ← feature
merge 的效果(保留分叉):
复制
A—B—E—F—M ← master
\ /
C—D ← feature
rebase 的效果(把 C、D 整体“剪下来”,贴到 F 后面,并生成全新 C’、D’):
复制
A—B—E—F—C’—D’ ← feature

历史成一条线,没有 merge 提交
常用场景
本地 feature 分支落后主分支,想同步最新代码又不要 merge 提交:
复制
git checkout feature
git 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
然后会进入vim

pick a1b2c3 第一个提交信息 pick d4e5f6 第二个提交信息 pick g7h8i9 第三个提交信息

只保留第一条 其他最前面全部改成squash

pick a1b2c3 第一个提交信息 squash d4e5f6 第二个提交信息 squash g7h8i9 第三个提交信息

然后!wq保存
之后看提示 关注source状态 可能编辑提交信息

之后确认即可

然后就发现 当前分支变成只有一个提交记录了
之后强推即可

过程中间会一个游离分支

如果一半不想改了 也可以取消

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 18:16:14

【干货】构建生产级RAG大模型应用:小白也能上手的完整实现手册!

简介 文章全面介绍了检索增强生成(RAG)技术,这是构建需要最新、领域专属知识的大模型应用的标准架构。文章从向量数据库、分块策略到性能优化与生产部署,提供了全链路实践指南,包括混合搜索、交叉编码器重排序、查询改写等优化技巧&#xff…

作者头像 李华
网站建设 2026/4/2 16:57:46

从零开始学C++:深入理解【类与对象】——类的6个默认成员函数

类的6个成员函数 前言一、C什么是“默认成员函数”?二、逐个详解六大默认成员函数1、默认构造函数2、析构函数3、拷贝构造函数4、拷贝赋值运算符5、移动构造函数6、移动赋值运算符 三、“三法则”VS“五法则”四、如何禁止拷贝或移动?五、总结表总结 前言…

作者头像 李华
网站建设 2026/3/16 2:18:52

Netcode for GameObjects Boss Room 多人RPG战斗(4)

Unity Boss Room 启动流程分析 核心启动组件 Boss Room 项目的启动流程由多个关键组件协同工作,以下是主要组件及其职责: ApplicationController.cs - 应用程序入口控制器 配置依赖注入容器,注册核心服务(ConnectionManager、NetworkManager等) 加载初始场景(MainMenu)…

作者头像 李华
网站建设 2026/3/30 20:19:49

Netcode for GameObjects Boss Room 多人RPG战斗(5)

L5_网络同步 Unity Boss Room 网络同步机制分析 1. 核心网络同步技术 Boss Room 项目主要使用 Unity Netcode for GameObjects (Netcode) 实现网络同步,核心技术包括: 1.1 NetworkVariable NetworkVariable 用于在网络上同步状态值,Boss Room 中主要应用于: 生命值同…

作者头像 李华
网站建设 2026/3/30 7:46:32

低代码平台重构:Flutter组件库与鸿蒙分布式能力融合实践

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。 低代码平台重构:Flutter组件库与鸿蒙分布式能力融合实践 低代码平台通过可视化拖拽方式降低开发门槛,结合Flutter的跨平台能力与鸿蒙的分布式特性,可构建覆…

作者头像 李华
网站建设 2026/4/2 14:53:35

如何通过LobeChat最大化利用GPU算力资源?

如何通过LobeChat最大化利用GPU算力资源? 在如今大模型遍地开花的时代,越来越多的开发者和企业希望将强大的AI能力部署到本地环境——无论是出于数据隐私、响应延迟还是成本控制的考量。但一个现实问题摆在面前:这些动辄数十亿参数的语言模型…

作者头像 李华