关注「Java视界」公众号,获取更多技术干货

rebase 和 merge 的区别么?

大概来说,git merge和git rebase都是用来做代码合并的,两者从最终效果来看没有任何区别,都是将不同分支的代码融合在一起。

 但是在遇到冲突和具体使用场景上有一些不同。

 

一、rebase

rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。

举例:如果你从 master 拉了个feature分支出来,然后你提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你在feature上 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。

 

二、merge 

 merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交。

 

比如:

  • 1-2-3 是现在的分支状态
  • 这个时候从原来的master ,checkout出来一个prod分支
  • 然后master提交了4.5,prod提交了6.7
  • 这个时候master分支状态就是1-2-3-4-5,prod状态变成1-2-3-6-7
  • 如果在prod上用rebase master ,prod分支状态就成了1-2-3-4-5-6-7
  • 如果是merge
    1-2-3-6-7-8
    ........ |4-5|
  • 会出来一个8,这个8的提交就是把4-5合进来的提交

 

三、merge和rebase的使用场景

  •  比如rebase,你自己开发分支一直在做,然后某一天,你想把主线的修改合到你的分支上,做一次集成,这种情况就用rebase比较好
  • 不要再公共分支使用rebase,因为往后放的这些 commit 都是新的,这样其他从这个公共分支拉出去的人,都需要再 rebase,相当于你 rebase 东西进来,就都是新的 commit 了
posted @   沙滩de流沙  阅读(404)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

关注「Java视界」公众号,获取更多技术干货
点击右上角即可分享
微信分享提示