作者:Will_Liao\来源:juejin.cn/post/7001409038307033119gitmerge和gitrebase的区别是将一个分支的commit合并到另一个分支到gitmerge1。在gitlab上新建一个项目,push一个到测试文件2.在本地修改测试文件,做两次commit,每次commit在文件里面加一句3.直接在远程仓库修改文件,commit,模拟其他开发者的commit4.如果此时我在本地push到远程的提交会被拒绝,因为远程和本地已经有了自己的commit。我们常规的做法是gitpull,本地解决冲突,然后继续push。本质上,gitpull=gitfetch+gitmerge产生了冲突:处理冲突:重新添加commit,然后push,可以看到merge一定算是一个新的commit:gitrebase如果我们用gitpull--rebase此时,即=gitfetch+gitrebase1。同样是本地commit2次,远程commit2次2。使用的时候可以看到gitpull--rebase,还是会提示我们处理冲突,但是从gitlog可以看出明显已经发生了rebase,即rebase,本地分支是基于最新的远程commit,而不是本地的最后一次commit3.处理冲突,每次处理本地commit冲突,使用gitadd标记冲突已经处理,使用gitrebase--continue继续处理下一个本地提交,或者先使用gitrebase-我将本地提交合并为一个提交,这样gitpull--rebase可以一次处理所有的冲突。4.推送到远程后,在分支图中可以清楚的看到。与merge不同的是rebase不产生分支。并且不会生成新的提交。总结Merge是合并操作,将两个分支的修改合并在一起。在默认操作中,合并时修改的内容会被提交。merge的commithistory记录的是实际发生了什么,重点是真正的commithistory。Rebase不进行合并操作,只是提取当前分支的变化,复制到目标分支最新提交的后面。rebase操作会丢弃当前分支提交的commit,所以不要对已经push到远端,正在与他人协作开发的分支进行rebase操作。Merge和rebase都是很好的分支合并命令。没有好坏之分。具体使用哪一种,要根据团队的实际开发需求和场景来决定。如果你更关心提交时间,你仍然应该使用gitmerge。rebase打乱时间线在所难免。近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.20w程序员红包封面,快拿。..5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
