git使用——merge、rebase 区别和 idea 里的 Merge into current、Rebase current onto seleced 使用

1. Git 中 merge 和 rebase 的区别

Rebase 和 merge 都是用于集成某个分支到另一个分支的方法。然而,它们采用的方法不同。Merge 会将两个分支直接合并成一个新的提交。而 Rebase 则是将某个分支的提交复制到另一分支上,然后插入到目标分支的合适位置。
Merge(合并)

git checkout dev
git merge featuremerge

是将两个分支的内容合并成一个新的分支,让这个新的分支包含两个分支的内容。当执行merge时,Git将会创建一个新的commit,合并两个分支的代码。
优点:

  • 简单易懂 - merge非常直观和易于理解2. 保留历史记录 - 由于merge创建了一个新的commit,因此可以在历史记录中查看合并的结果,并且不会改变历史记录

缺点

  • 会产生冗余的commit- 由于merge会创建一个新的commit,因此可能会产生许多不必要的commit。 例如我们经常遇到的: Merge remote-tracking branch ‘origin/xxx‘ into xxx 问题
  • 历史记录较为复杂 - 多个merge操作可能会导致历史记录变得复杂,难以理解。
  • 引入冲突 - 当两个分支的修改都影响到文件的同一部分时,merge可能会引入冲突。

Rebase(变基)
Rebase是重新应用提交的命令,将当前分支的修改加到另一个分支上,并使得当前分支包含来自另一个分支的最新修改。当执行rebase命令时,当前分支的提交将会添加到目标分支的最后面。

优点:

  • 历史记录简单 - rebase可以使得历史记录更加线性和简单,比merge更容易理解
  • 减少冗余的commit - rebase会将当前分支的修改整合到目标分支中,因此可以减少不必要的commit数量
  • 少产生脏数据- 当多人共同修改同一文件且merge失败时,rebase可以减少多余的commit,同时尽可能保留原作者的提交记录。

缺点

  • 可以改变历史记录 - rebase会改变历史记录,因此需要谨慎使用。
  • 可能会丢失提交记录 - 如果由于一些原因,rebase失败,一些提交记录可能会丢失。
  • 可能会引入冲突 - 当两个分支都修改了同一个文件的同一部分时,可能会引入冲突。

总之,当Git团队需要保持干净的历史记录时,或者需要对提交的顺序进行控制时,rebase是非常有用的。而在其他工作流程或不需要保存版本顺序的情况下,merge可能是一个更简单的选择。

2. 在Intellij idea 中的使用

场景:假如有一个主分支 master ,另外一个分支 dev,在dev上做了一些改动,想合并到主分支上,有两种方式:merge 和 rebase。
准备:在这里插入图片描述

1.第一步:先将master 分支checkout, 在idea 的git 里 也就是“current”。
在这里插入图片描述

2.第二步:鼠标右键 dev 弹窗,merge into current 或 Rebase Current onto selected 执行效果一样(都是将dev 上的修改合并到master 上,只是一个是merge 一个是 rebase 罢了)。
在这里插入图片描述
当然 也可以用命令行:
git merge dev 或 git rebase dev 来替代界面操作

假如我们执行的是 Merge into current 操作 可以看出,master 上已经有了dev 上的改动的代码:
在这里插入图片描述

  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值