最近实验室的项目终于开始正式撸代码了,前期一直处于各种七七八八的设计阶段,项目成员主要就是我们实验室同届的加上我一共五个,虽然之前一直代码管理用得就是Git,但是关于Git的分支管理一直很混乱,甚至没有任何规约。
实验室同学之前在项目中分支管理的方法是有一个dev分支和master分支,然后另外每个人凡参与项目都得新建一个自己的分支,合并代码在自己的分支上,而且自己的分支是不会被删除的,按照这种方法就是每个人得维护自己的分支。
询问了同学他们之前为什么这么做,他们也不清楚,只是其他人这么做,他们于是就跟着做了。我觉得这种方法每个人都得维护自己的分支,分支太多容易混乱不利于后期代码管理,而且思路不清晰,便想着重新启用一套比较简洁成熟的分支管理策略,适合我们这种小团队项目开发。
分支管理策略
上网查了一些相关资料(参考资料链接放在文章末尾),决定采用如下的分支管理策略:
- 主分支master
一个代码库有且仅有一个主分支,主分支主要用于大的版本更新,一般很少更新master分支。 开发分支dev
主分支只用来分布重大版本,日常开发应该在另一条分支dev上完成。我们把开发用的分支,叫做dev。如果要对外发布大版本,如果想正式对外发布,就在master分支上合并dev分支上代码。1git merge dev临时分支
master分支和dev分支都是主要分支,长久存在,属于常设分支。我们也决定只设master分支和dev分支两个常设分支。
但是,除了常设分支以外,还有一些临时性分支,临时性分支就是应对一些特定的版本开发,比如完成某些功能模块、修复一些bug等等都是属于临时性分支。阮一峰老师博文当中给了三个临时性分支,功能分支、预发布、修补分支,但是考虑我们团队的实际情况,我们在实际开发中可能只会用到功能(feature)分支,而修补bug(fixbug)分支与功能(feature)分支也并没有去严格去区分开来,我们不搞预发布这个环节当然也不去建预发布(release)分支了。
最后临时性分支具体体现在我们团队中就是每个人在要开始一个新的功能模块的时候会去建个自己的分支比如:cgs分支,开发完之后在dev分支上合并自己分支cgs,合并完删除,下次再开发另外的功能,再重新新建cgs,这样代码库的常设分支就只有dev和master了,其他都是临时分支。
Git分支工作流程
以上就是我们团队的Git分支管理策略,经过实践感觉还是不错的,下面通过git操作命令模拟一个完整的流程,假设我现在要开始进行加入项目开发:
这样一次功能性开发就完成了,至于发布用户版本的过程就不说了,只是在master分支合并dev代码而已,操作跟上面大同小异。
总结
这样看来我们的分支管理策略就很简洁了,只有master和dev两个常设分支,也是主要维护的分支,其余的都是临时分支,平常合并代码在dev分支上,临时分支用完可删,也可随时基于dev分支新建,管理起来方便很多,思路也更清晰了,达到了团队预期的目的。
参考
阮一峰:Git分支管理策略
分支管理策略
Git 分支 - 分支的管理
-EOF-