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


相关推荐
前端无冕之王38 分钟前
HTML邮件的制作以及可能遇到的问题
前端·html
ssk52112540 分钟前
HTML邮件的制作以及遇到的问题
前端·html
ChoSeitaku41 分钟前
10.前端部分|首页index.html|题库all_questions.html|指定题目one_question.html(html)
前端·javascript·html
LUCIAZZZ4 小时前
TCP基本入门-简单认识一下什么是TCP
java·网络·后端·网络协议·tcp/ip·计算机网络·spring
_未知_开摆4 小时前
2020年蓝桥杯Java B组第二场题目+部分个人解析
java·经验分享·后端·程序人生·蓝桥杯
绿白尼4 小时前
git 使用常见错误整理
git
恋喵大鲤鱼4 小时前
git branch
git
七公子774 小时前
网络协议 HTTP、HTTPS、HTTP/1.1、HTTP/2 对比分析
前端·网络·网络协议·http
勘察加熊人4 小时前
angular日历
前端·javascript·angular.js
Min_nna5 小时前
web前端初学Angular由浅入深上手开发项目
前端·typescript·angular.js