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 @ 2024-01-19 18:41  xyfyy  阅读(41)  评论(0)    收藏  举报