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


相关推荐
支撑前端荣耀2 分钟前
五、测试用例的组织和编写
前端
支撑前端荣耀2 分钟前
七、命令行运行Cypress
前端
支撑前端荣耀3 分钟前
九、重塑你的“测试习惯”——避开Cypress的那些“坑”
前端
白仑色3 分钟前
Spring Boot 多环境配置详解
java·spring boot·后端·微服务架构·配置管理
懒斌4 分钟前
linux驱动程序
后端
拾光拾趣录4 分钟前
Vite 与 Webpack 热更新原理
前端·webpack·vite
超级小忍6 分钟前
在 Spring Boot 中优化长轮询(Long Polling)连接频繁建立销毁问题
java·spring boot·后端
GISer_Jing6 分钟前
前端开发—全栈开发
前端·javascript
great7 分钟前
yarn和npm有什么区别
前端
拾光拾趣录7 分钟前
Flutter跨平台、性能优化与安全
前端·flutter