Site Overlay

如何管理你的Git分支

前言

本文主要介绍 Git 版本管理工具,在多人协同时,出现分支的管理混乱问题。为了响应市场需求的变化,版本的迭代速度和频率都不断提高,很容易出现发版与测试管理的混乱的问题,甚至可能导致生产环境会出现一些低级且严重的错误。

1. 分支管理混乱时,所遇到的问题

  • 发布的版本与测试的版本不一致;
    • 导致生产环境出现不可预期的BUG
  • 没通过测试的Feature,被合并到Dev分支;
    • 导致Dev分支被冻结,合并Dev代码出现错误;
  • 没有计划发版的Feature,被合并到Dev分支;
    • 导致产品规划的版本功能,无法被拆解;

2. 分支管理模型:GitFlow

git-flow

如图所示:GitFlow是一个已经相对成熟的Git分支管理模型。

2.1 什么是GitFlow

Git:是对项目文件的跟踪与记录,但Git并没有规定分支的含义,大部分小型或者个人项目,基本只需要master, dev分支就足够了。但当项目复杂度提高,人员增多时,管理不当dev就会频繁的出现代码冲突,功能无法分割的问题。

GitFlow:原理就是给各分支赋予含义,让分支管理变得更加清晰,每个分支有自己的使用场景和主要职责。

2.2 GitFlow 分支结构

  • Production:是我们经常使用的master分支,这个分支最近发布到生产环境的代码,最近发布的release, 这个分支只能从其他分支合并,不能在这个分支直接修改;

  • Develop:这个分支是主开发分支,包含所有要发布到下一个release的代码,这个分支主要用于合并其他feature分支代码;

  • Feature:这个分支主要是用来开发一个新的功能,开发测试完成后,将其合并回develop分支,进入下一个release;

  • Release:当你需要发布一个Beta测试版时,将develop分支合并到release分支,完成测试和修复后,将release合并到master和develop分支;

  • Hotfix:当我们在Production发现新的Bug时候,我们需要创建一个hotfix分支, 完成hotfix后,将其合并到master和develop分支;

2.3 GitFlow 发版测试流程

2.3.1 Feature
  • 打包命名: v1.0.0.18

  • 使用场景: 添加新特性、或功能模块时;

  • 打包前: 需先合并develop到当前feature分支;

  • 测试通过后: 合并回develop并重新执行集成测试;

2.3.2 Develop
  • 打包命名: v1.0.0.19

  • 使用场景:

    • 对项目框架,构建等全局性修改的,可直接在develop修改;

    • master的hotfix修改,需合并到develop;

    • feature测试通过后,需合并到develop进行集成测试;

  • 打包前:需先合并master分支合并到develop

  • 测试通过后: 合并回master并重新执行集成测试;

2.3.2 Master
  • 打包命名: 1.0.0
  • 使用场景:

    • 通过develop集成测试,且要发版上线时,将develop集成测试通过的版本,合并到master分支打包发版。

    • 线上有BUG热修复时,创建hotFix分支,修复bug并合并回master分支打包发版。

2.4 分支移除
  • 每个feature/hotfix被合并回到主分支后,都应该被移除,否则历史分支会越来越多,无法维护。

3.Git管理工具推荐

SmartGit (推荐)
  • 功能全面,天然支持GitFlow;
  • 冲突处理工具,代码冲突颜色区分非常清晰;
  • 批量处理工具,非常方便易用;
SourceTree
  • 功能全面,天然支持GitFlow;
  • 界面比较干净简洁,可自定义;
  • 在易用性上,稍逊于SmartGit,对界面要求较高的同学还是不错的!

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据