git rebase和git merge的区别

本文深入探讨Git中merge和rebase的区别,包括它们在处理分支合并时的行为差异,以及如何在遇到冲突时进行有效处理。同时,对比了git pull与git pull --rebase在合并分支时的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、git merge和git rebase的区别

git merge 和 git rebase都是用来合并分支的。

我们知道在合并分支的时候是有可能会产生冲突的。冲突出现的根本原因是因为在合并的时候,不同分支修改了相同的位置。

二者的根本区别在于:

  1. 比如主分支是master,你工作的分支是feature分支,采用git merge和git rebase后,git merge不会保留merge的分支commit,而rebase会保留所有的commit;
    在这里插入图片描述

  2. rebase会将当前分支的commit放到公共分支的最后面,也叫做变基。就好像从公共分支又重新拉出来这个分支一样。

举例:如果从master拉一个feature分支出来,然后在feature分支上提交了若干个commit,这个时候有人把另外一个分支的东西合并到master中,然后这个时候如果你rebase master,就会把你在feature上的若干个commit,放到那个人的commit的后面。

在这里插入图片描述

  1. 而merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交。如上图图一的最后一次commit记录
    在这里插入图片描述

二. git中如何处理冲突

如果使用merge合并分支的流程如下:

1.解决冲突。 2.执行git add file. 3. 执行git commit -m ‘fix’. 这个时候会产生一个新的有关于merge feature分支和master分支的commit。

如果使用rebase合并分支的流程如下:

1.解决冲突。 2.执行git add file. 3. 执行git rebase --continue 这个时候不会产生一个新的额外的commit,分支上不会有无意义的解决分支的commit;但是如果feature分支上存在多个commit,则需要重复处理多次冲突。

git pull和git pull --rebase区别:

git pull做了两个操作分别是‘获取’和合并。所以加了rebase就是以rebase的方式进行合并分支得到一条干净的分支流
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值