常见分支管理策略

对于代码版本控制,从我们在没有工具时的傻瓜式管理,到后来的svn,再到普及git管理。git的分支管理策略,针对于不同规模的团队、不同的项目开发流程演变出多个版本,下面大体做下介绍。

几种版本控制方式

本地管理
  • 每一版本对应一个文件夹;通过复制粘贴来操作迭代及版本维护。
中心化管理
  • 多了一个中央服务器来管理版本;
  • 从中央下载版本,变更后同步到服务器;
  • 多人一起操作一个版本。
分布式管理
  • 在中央基础上多了本地仓库;
  • 本地仓库可以独立处理版本迭代;
  • 中央仓库可以实现多人协作。

git和svn对比

  • svn中心化管理,git分布式管理;
  • svn分支管理没有git灵活;
  • svn简单明了上手简单,git需要学习成本;
  • svn需要网络支持,git有本地仓库支持对网络依赖不强;

flow

以下是目前主流的分支策略。

git flow
  • 最基本的git工作流:5类分支(master、开发分支、特性分支、发布分支、修复分支),2个主分支(master、开发分支);
  • 从master分支切出开发分支、修复分支,这两个分支最终合入master分支;修复分支也会合入当前开发分支;
  • 特性分支从开发分支切出;
  • 发布分支从开发分支切出;发布分支发布后合并到master分支,打上tag。
  • 优点:该有的都有;
  • 缺点:复杂、长久分支造成冲突比较多。
github flow
  • 极简化的git工作流,2类分支(master、开发分支),1个主分支(master);
  • 从master切出开发分支;
  • 依靠github pull request来操作;
  • 有评审合并的流程;
  • 优点:不用管那么多分支;每个分支合并后都有对应版本号;
  • 缺点:针对中小型团队是可以的,稍大点的团队不能满足多分支管理。
trunkbased
  • 为解决冲突而生的git工作流,2类分支(master、发布分支),1个主分支(master);
  • 所有人在master分支上开发;
  • 分支随时满足发布,需要发布时候创建发布分支,并打上版本号;
  • 修复bug在master分支进行;
  • 优点:删繁从简,敏捷最适合,解决冲突的基本上没了;
  • 缺点:多个环境部署会碰到问题,要保证每一个提交都能正常运行。
aoneflow
  • 阿里的git工作流;3类分支(master、特性分支、发布分支),1个主分支(master);
  • 3个原则:a.从master切出特性分支;b.开发分支灵活的创建发布分支;c.上线后删除特性分支和发布分支,打tag;
  • 优点:灵活的安排发布分支,支持长时分支;
  • 缺点:有长时分支,就会有冲突。

当前实践

  • 需求:
    • 多环境;多分支;灵活发布;减少冲突;
  • 分支
    • master,主干分支,最稳定版本,所有版本切出源头。
    • 开发分支,dev1.0.0,跟随迭代版本号,开发环境公同开发版;
    • 测试分支,release1.0.0,随时可以发布分支,从dev1.0.0合并,部署测试环境和预发布环境;
    • 特性分支,不能跟随版本一起上线的,从master切出,合并到要上线当周的开发分支,要求每周自行合并master;
    • master,由管理者维护,同时管理分支创建;
    • 测试分支加保护,依靠pull request,在gitlab/github提单合并。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值