SourceTree如何看代码分支图谱?
分支创建(单个)
在实际工作中,可能会基于master分支拉一个dev分支去开发一个新功能,等新功能测试完毕后,合并到master分支去做上线部署。具体图谱如下:
初始化分支如下图,一个master分支,一个dev分支,dev分支拉取于master分支,进行两次提交后,合并到master分支,下面基于此图进行分支创建的图谱演示
基于上图master分支最新提交新建一个dev功能01分支,开发新功能01,此时dev功能01只是存在本地仓库,并未推送到远程仓库,新分支建立后图谱如下:
origin/master表示远程分支,master表示本地分支
下面基于新建的dev功能01分支进行两次提交,图谱如下:
如上图所示,dev功能01分支进行两次提交后,图谱和master是一条线。跟预期不太一样吧,还以为拉个新分支,会从master分支分个叉出来,没想到是重合的线。
如果在这样的图谱下,如何找到dev功能01是从master哪次提交节点拉出来的分支呢?暂时没有思路,先按下不解,继续往下走。
合并分支
基于上一节,dev功能01分支已经有两次提交,现在我们把dev功能01分支合并到master,看下图谱会咋变化?
master分支仅仅是追平了dev功能01分支,图谱依然是在一条线上,而且描述竟然没有显示Merge信息。现在更加辨别不出dev功能01 分支是从master哪个提交节点拉出来的。
分支创建(多个)
基于上一节,dev功能01已经合并到master,意思是该分支功能已开发测试完成,并已成功上线,职责已经完成,该分支可以废弃不用。
下面我们基于master分支最新提交记录同时拉取两个开发分支开发dev功能02,dev功能03,看下图谱会发生啥变化?
从上图可以看出,拉两个分支和拉一个分支效果是一样的,拉出的分支线和master均是重合的,在一条线上
下面我们在dev功能01 和 dev功能02 两个分支分别完成功能开发并提交,看下效果是啥?
可以看出,随着dev功能03的提交,分支dev功能02单独分出了一条线,最后次提交的dev功能03依然和master分支在一条线上。
基于master分支最新提交,再新建一个分支dev功能04,开发功能04,这也比较符合项目团队,多个功能并行开发的实际场景。图谱如下:
可以看出dev功能04分支起点依然是和master主线重合。
下面基于dev功能04分支开发功能并提交一次,图谱如下:
可以看出,dev功能04分支和master主线重合,其他分支都分叉了。得出结论从同一提交节点拉的分支,最后一个会与master主线重合,其他会分叉。
合并后提交修补,再合并
现在有个场景,分支功能开发测试完成,合并到master分支了,但发现少了某个小项功能,需要修补进去?那这个时候是继续在原有分支完善,再合并,还是基于master最新重新拉一个分支继续修补,再合并?
先试下第一个方案: 在原有分支完善,再合并
在dev功能01分支进行试验。
可以看出,dev功能01又将dev功能04挤出了主线master。
我们来继续合并dev功能03分支的功能,如下图:
可以看出,master主线分支跑到了dev功能03分支上,并和dev功能03 分支合为一条线。
预期是会像dev分支合并master一样,分叉合到蓝色主线上master。
感觉越来越没规律了。
继续将dev功能02合到master分支,如下图:
由于dev功能03分支代码已先合到master,再合时间线比它晚的dev功能02分支,由于修改的是相同文件,所以出现了代码冲突。但图谱已经比较清晰了。
最左边竖线已变为绿色,且是master分支和dev功能03分支的图谱线。
下面解决冲突,以最新修改时间线dev功能03的提交为准。提交后图谱如下:
心态有点崩了,咋主线分支又变成蓝色了。这个规律到底是啥?
目前唯一能得到的规律是:
1 每个分支图谱颜色不是固定的;
2 分支图谱颜色是可以一样的;
3 基于master分支拉取新分支,不会分叉,有提交记录后才会分叉,且最后一次提交分支会和master分支图谱线重合。
该篇文章就先试验到这里,有总结出规律的同学欢迎前来补充,一起学习进步!
版权归原作者 花菜回锅肉 所有, 如有侵权,请联系我们删除。