git:亲测体验rebase与merge

rebase与merge异同与最佳使用场景


这个dev-cui分支从devlop分支切出后,一直都只有我一个人在开发&维护.

假如还有一位同事张三, 在devlop分支切出的分支dev-zhangsan 上进行开发,他添加了一个glossary.md ,而后进行了add & commit

此时项目开发完成,需要将两个分支合并到devlop分支上:

develop 分支先合并了dev-cui,(即切到develop分支, 执行git merge命令)

git merge

接着去合并dev-zhangsan ,如果使用git merge,

绿色表示dev-cui 分支,紫色表示dev-zhangsan,每一个点代表一次提交.

可见出现了分叉,且merge操作会自动有一次commit(此处为快进式提交,参看文首链接),见下图:

gir rebase

先回退到7f8ccb37fdcced4bd4766c8192a6e27fc5f02730,

接着切换到dev-zhangsan 分支, 执行git rebase develop,

此刻对于dev-zhangsan 分支,已经有了develop分支的其他提交

而后切回develop 分支,执行git merge dev-zhangsan

此时的develop分支的提交log为:


git rebase一般称为变基换基 , 这篇blog 将其称为衍合 ,区别于git merge合并

其实git rebase后,还是要执行一次git merge.

即有个主干分支A,有个次分支B,二者切分后,都有许多次提交. 这时想再合并到一起,且希望commit log是一条直线, 那切到次分支B上,执行git rebase A, 这时就基于A,然后把B的改动"拔掉",然后放到最前面.(B的提交历史此时是一条直线)

而后需要切回主干分支A,执行git merge B,一定是一个"快进式提交". 此时对于A,它的commit log就也是一条支线了


相关推荐
三年三月5 分钟前
浏览器地址栏回车 vs 点击刷新按钮的缓存行为差异分析
前端·javascript
华仔啊7 分钟前
提升 Java 开发效率的 5 个神级技巧,超过 90% 的人没用全!
java·后端
间彧15 分钟前
Docker Compose如何编排包含数据库、缓存等多个服务的SpringBoot应用?
后端
码农刚子19 分钟前
ASP.NET Core Blazor 核心功能一:Blazor依赖注入与状态管理指南
前端·后端
是你的小恐龙啊20 分钟前
自动化信息交付:深度解析AI驱动的每日简报系统架构与实现
后端
胖虎26520 分钟前
基于Vue3+xgplayer 移动端直播解决方案
前端
用户40993225021221 分钟前
Vue 3模板如何通过编译三阶段实现从声明式语法到高效渲染的跨越
前端·ai编程·trae
小左OvO22 分钟前
基于百度地图JSAPI Three的城市公交客流可视化(二)——区域客流
前端·javascript·vue.js
小码编匠25 分钟前
WPF 动态模拟CPU 使用率曲线图
后端·c#·.net
我是谁的程序员25 分钟前
让调试成为团队优势,如何把Charles融入前端与测试的工作流
后端