Git Rebase和Merge
Rebase
首先,先看一下git rebase的操作图:
在B点创建出来一个新的分支feature,进行了两个commit C和D,master分支则进行了一次提交M, 然后在feature分支上执行
然后执行git rebase master
这样对变基(rebase)既可清楚理解。
git rebase简单来说就是将C和D的提交抽取出来,然后拉取到master的最新版本,在将C和D的提交加上去,解决好冲突,变成了C’和D‘。
作用:在主干开发分支合并的开发流程中,可以在提交之前rebase master的代码,然后再去提交,可以用来解决不必要的代码冲突。
Merge
merge操作就是简单的将其它分支的提交合并到当前分支。这里需要介绍一个新的概念 fast-forward
再当前的分支情况下,在master上执行git merge hotfix,此时会发生fast-forward。因为hotfix分支是基于master的最新的提交进行的开发,显然可以直接将hotfix分支上的提交直接给master分支即可,即修改master指针的指向位置。(可以使用--no-ff参数来禁止fast-forward)
git merge后版本状态变为如下图:
此时,如果想要merge iss53这个分支,就不会发生fast-forward,因为iss53是基于c2开发的,而master目前已经到了c4,所以两者合并会产生一个新的合并的提交。
大量使用merge的问题就是当分支数量过多,git的commit log graph会变得庞杂,难以观察。可以再iss53分支merge进master之前进行一次rebase, 这样可以触发fast-forward,从而让提交历史变得干净。
但很多公司疑似不推荐使用rebase, 并且会禁止使用,因为rebase会导致难以分清楚一个feature的开发都是那些commit,且可能会改变提交的时间线。不过我司目前没有禁止使用~先简单了解了解
标签:Git,merge,Rebase,Merge,git,master,提交,rebase,分支 From: https://www.cnblogs.com/xyfhsy/p/17975361