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

1. Git 中 merge 和 rebase 的区别

简介:

$ git pull --rebase和$ git pull区别
是git fetch + git merge FETCH_HEAD的缩写,所以默认情况下,git pull就是先fetch,然后执行merge操作,如果加-rebase参数,就是使用git rebase代替git merge 。更新本地仓库

merge 和 rebase
merge 是合并的意思,rebase是复位基底的意思。
现在我们有这样的两个分支,test和master,提交如下:

在这里插入图片描述
在master执行git merge test然后会得到如下结果:
在这里插入图片描述
在master执行git rebase test,然后得到如下结果:

A----B----D----E----C ’ ---- F ‘ test master

可以看到merge操作会生成一个新的节点,之前提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的操作。

通过上面可以看到,想要更好的提交树,使用rebase操作会更好一点,这样可以线性的看到每一次提交,并且没有增加提交节点。
在操作中。merge操作遇到冲突时候,当前merge不能继续下去。手动修改冲突内容后,add 修改,commit 就可以了
而rebase操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后,将修改add后执行git rebase -continue继续操作,或者git rebase -skip忽略冲突。

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 上的改动的代码:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u014212540/article/details/119213935