Git Rebase和Merge

Git Rebase和Merge

Rebase

首先,先看一下git rebase的操作图:

在B点创建出来一个新的分支feature,进行了两个commit C和D,master分支则进行了一次提交M, 然后在feature分支上执行

image-20240119114057953

然后执行git rebase master

image-20240119114252255

这样对变基(rebase)既可清楚理解。

git rebase简单来说就是将C和D的提交抽取出来,然后拉取到master的最新版本,在将C和D的提交加上去,解决好冲突,变成了C’和D‘。

作用:在主干开发分支合并的开发流程中,可以在提交之前rebase master的代码,然后再去提交,可以用来解决不必要的代码冲突。

Merge

merge操作就是简单的将其它分支的提交合并到当前分支。这里需要介绍一个新的概念 fast-forward

image-20240119122020578

再当前的分支情况下,在master上执行git merge hotfix,此时会发生fast-forward。因为hotfix分支是基于master的最新的提交进行的开发,显然可以直接将hotfix分支上的提交直接给master分支即可,即修改master指针的指向位置。(可以使用--no-ff参数来禁止fast-forward)

git merge后版本状态变为如下图:

image-20240119122311246

此时,如果想要merge iss53这个分支,就不会发生fast-forward,因为iss53是基于c2开发的,而master目前已经到了c4,所以两者合并会产生一个新的合并的提交。

image-20240119122443518

大量使用merge的问题就是当分支数量过多,git的commit log graph会变得庞杂,难以观察。可以再iss53分支merge进master之前进行一次rebase, 这样可以触发fast-forward,从而让提交历史变得干净。

但很多公司疑似不推荐使用rebase, 并且会禁止使用,因为rebase会导致难以分清楚一个feature的开发都是那些commit,且可能会改变提交的时间线。不过我司目前没有禁止使用~先简单了解了解

posted @   xyfyy  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示