合并代码还在用git merge吗?我们都用git rebase!

全栈架构社区

共 1976字,需浏览 4分钟

 · 2022-02-11


相关阅读

300本计算机编程的经典书籍下载

AI全套:Python3+TensorFlow打造人脸识别智能小程序

最新人工智能资料-Google工程师亲授 Tensorflow-入门到进阶

Java架构全阶段七期完整

黑马头条项目 - Java Springboot2.0(视频、资料、代码和讲义)14天完整版

Spring核心编程思想

2T架构师学习资料干货分享

作者:Will_Liao

来源:juejin.cn/post/7001409038307033119


git merge 和 git rebase的区别


目的都是将一个分支的commit合并到到另外一个分支中去


git merge


1.在gitlab上新建一个项目,push一个test文件上去



2.在本地修改test文件做两次commit,每次commit都在文件中加一句修改





3.在远程仓库中直接修改文件并commit,模拟其他开发者的commit



4.如果此时我push本地的提交到远程,就会被拒绝,因为远程和本地已经各自有commit了,我们常规的做法是git pull一下,在本地解决冲突,然后继续push,本质上git pull = git fetch + git merge

产生冲突:




处理冲突:



重新走add commit 然后push,可以看到必须将合并当作一个新的commit:



git rebase


如果我们此时采用git pull --rebase,也就是=git fetch + git rebase

1.一样本地commit2次,远程commit2次




2.使用可以看到git pull --rebase,还是会提示我们去处理冲突,但是从git log 上可以看出明显已经发生了rebase,也就是变基,本地分支基于了远程的最新commit,而不是上次的本地commit,另外搜索公众号互联网架构师后台回复“2T”,获取一份惊喜礼包。




3.处理冲突,每处理完一次本地commit冲突,用git add标记冲突已处理完,用git rebase --continue继续处理下一个本地commit,也可以先用git rebase -i将本地的commit合并为一个commit,这样git pull --rebase就能一次处理所有的冲突



4.push到远程之后,在分支图可以明显看到,跟merge的区别在于,rebase不会产生分支,并且也不会产生新的提交


总结



全栈架构社区交流群

 「全栈架构社区」建立了读者架构师交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。

扫描添加好友邀你进架构师群,加我时注明姓名+公司+职位】


看完本文有收获?请转发分享给更多人


往期资源:
Flutter 移动应用开发实战 视频(开发你自己的抖音APP)
Java面试进阶训练营 第2季(分布式篇)
Java高级 - 分布式系统开发技术视频
浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报