git分支的创建与分支之间合并的底层原理

开发一个版本,采用的发布流程:

(1).从master的最新代码拉取一个开发分支,在上面进行开发(这里假设开发分支为dev)

(2).在开发分支上不断地进行提交版本,期间,master也会有因为其他版本上线而不停有版本合并

(3).要发布的时候,把master代码重新合一遍到dev分支

(4).发布完成了,把dev的代码合到master


1.什么是分支

分支是一个commit对象链:一条工作记录线

git分支的创建与分支之间合并的底层原理_第1张图片

git每一次提交版本,都会在该版本上存一个字段parent,记录的是上一个提交的版本号,这样就可以从一个提交的快照里拿到之前所有提交过的记录

2.新建分支是如何操作的

先了解2个重要的概念——HEAD和master:HEAD指向的就是当前分支(某个时刻你所处的分支),master指向提交

(1)创建分支之前,HEAD指向master

git分支的创建与分支之间合并的底层原理_第2张图片

(2)创建分支dev,HEAD指针指向dev

git分支的创建与分支之间合并的底层原理_第3张图片

与svn不同的是,svn创建分支会把全部内容拷贝一份,git创建分支只会创建一个指针

 (3)开发的过程中,如果我们提交了代码,则指针情况是

git分支的创建与分支之间合并的底层原理_第4张图片

(4)这个时候,假设master没有新的内容,而你的版本要发布了,则不需要从master上合代码到dev,发版完毕以后,要把dev分支的内容合到master,指针情况是

git分支的创建与分支之间合并的底层原理_第5张图片

这种合并我们叫做fast-forward(快进,如果可能,合并分支git会使用这种模式,除非再合并时加上 --no-ff参数,这样就会多出一个commit_id)

(5)在我们要发版的情况下,一般的情况是,master有新提交,我们自己也有提交在上面,所以,一般的示意图是

git分支的创建与分支之间合并的底层原理_第6张图片

(6)把master合到dev,准备发版(假设没有冲突,有冲突先解决)

git分支的创建与分支之间合并的底层原理_第7张图片

(7)发布完成,代码从dev再合到master,见步骤(4)

你可能感兴趣的:(git)