合并代码还在用 git merge 吗?互联网公司都用 git rebase!

46a2e478b8f4a9a1ff85345109aae944.png来源 | juejin.cn/post/7001409038307033119

  • 01、git merge 和 git rebase的区别

  • 02、git merge

  • 03、git rebase


01、git merge 和 git rebase的区别

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

02、git merge

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

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

8c15ef7857b80d403abef447b39485e8.png 3d05f487aee5a3b1e8705bf863677555.png

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

c548a72c8dcf1afbb3abc4af8230d2cf.png 5b9a35d81110935049531c68e7ee6c52.png

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

产生冲突:

e9f1f4ecb7c04b598268e1cf31a0a9e2.png

处理冲突:

3401ff06670f47103f1becce87876dd6.png

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

ed4d8c343f91edac96ecd963f890e67e.pngb252c149682639d00220c3ed96ccf553.png

03、git rebase

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

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

04f03fa5a9ba7bbf8d05d3cc33e3c0dd.png d6736bf8e7e05326fe53dd99f82b30e2.png
  1. 使用可以看到git pull --rebase,还是会提示我们去处理冲突,但是从git log 上可以看出明显已经发生了rebase,也就是变基,本地分支基于了远程的最新commit,而不是上次的本地commit

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

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

b5bd1a68939d921de8fa31f8306fd095.png

END

推荐:

最近好文

1、IntelliJ IDEA 的 Win 和 Mac 快捷键大全!

2、Docker 大势已去,Podman 即将崛起 !

3、这次,Swagger-ui遇到对手了!

4、一个基于Spring Boot+Vue+Redis的物联网智能家居系统

5、本机号码一键登录原理与应用

 
 

271cb2a17db2b6b0e491d7b9b9d3addd.png

 
 
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值