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就也是一条支线了


相关推荐
张拭心42 分钟前
Cursor 又偷偷更新,这个功能太实用:Visual Editor for Cursor Browser
前端·人工智能
I'm Jie1 小时前
深入了解 Vue 3 组件间通信机制
前端·javascript·vue.js
用户90443816324602 小时前
90%前端都踩过的JS内存黑洞:从《你不知道的JavaScript》解锁底层逻辑与避坑指南
前端·javascript·面试
CodeCraft Studio2 小时前
文档开发组件Aspose 25.12全新发布:多模块更新,继续强化文档、图像与演示处理能力
前端·.net·ppt·aspose·文档转换·word文档开发·文档开发api
追逐时光者3 小时前
一款开源、现代化的 WinForm UI 控件库
后端·.net
PPPPickup3 小时前
easychat项目复盘---获取联系人列表,联系人详细,删除拉黑联系人
java·前端·javascript
老前端的功夫3 小时前
前端高可靠架构:医疗级Web应用的实时通信设计与实践
前端·javascript·vue.js·ubuntu·架构·前端框架
前端大卫3 小时前
【重磅福利】学生认证可免费领取 Gemini 3 Pro 一年
前端·人工智能
孜燃4 小时前
Flutter APP跳转Flutter APP 携带参数
前端·flutter
花月C4 小时前
个性化推荐:基于用户的协同过滤算法
开发语言·后端·算法·近邻算法