2012年按照SVN方式来使用Git,还不熟悉Git分支,就是下面的直线模型。其缺点是没有阶段,使用者不知道什么时候是发布版(永远都在发布)。即使后来使用了tag功能,也没多大改变。
2013年开始使用两个分支,在特定时间进行合并和同步。开发变化较大的新功能时新开一个分支。
2014年使用了树状分支模型,同时维护几个发布版本。优点是在不同分支切换很方便,可以将新功能或Fix应用到不同发布版本。缺点是使用了patch功能,手工操作较多,可能丢失中间提交信息。
最近两个月不再使用树状分支模型,改成在一个基础发布版本上扩充出其他发布版本,通用功能在基础版本上增加,然后定期拉到其他版本的开发分支上,定期推到发布分支,形成有分有合的图。优点是不同功能灵活应用到不同发布版本,不再丢失中间提交信息,重复工作少了。下图有三个远程库(三种版本),每个库有master、develop分支,偶合会有feature分支(较复杂的功能单开一个分支,完成后merge到develop分支)。
我在摸索中走了不少弯路,现在感觉良好,虽然可能有Git高手会笑话。我用的是SourceTree,记不住复杂的Git命令就用GUI版的了。
最后附上权威的分支模型图。