git flow分支管理

git flow分支管理
最新回答
西瓜小姐

2020-08-20 12:57:47

Git Flow是一种由Vincent Driessen提出的分支管理策略,旨在使版本库的演进保持简洁、主干清晰,各分支职责明确、管理有序。 以下是Git Flow分支管理的详细介绍:

分支类型及作用
  • 两种核心分支

    主分支(Master):代码库有且仅有一个主分支,所有提供给用户使用的正式版本都在此分支发布。该分支只能从其他分支合并,不能直接修改,且所有提交应标记tag。

    开发主分支(Develop):主开发分支,包含所有要发布到下一个Release的代码,主要与其他分支(如Feature分支)合并。该分支用于优化和升级开发,若有新需求应拉出feature分支。

  • 三种临时分支

    功能(Feature)分支:用于开发新功能,开发完成后合并回Develop分支进入下一个Release。

    预发布(Release)分支:当需要发布新Release时,基于Develop分支创建。完成Release后,合并到Master和Develop分支。

    修补Bug(Hotfix)分支:当在生产环境发现新Bug时创建,完成Hotfix后合并回Master和Develop分支,改动会进入下一个Release。

Git Flow流程示例代码
  • 创建develop分支#从master拉出develop分支#可选,获取最新版本。git pull origin mastergit checkout -b develop master#发布develop分支git push -u origin develop
  • 创建feature分支#从develop拉出feature_v1.0功能分支#可选,获取最新版本。git pull origin developgit checkout -b feature_v1.0 develop#发布feature_v1.0分支git push -u origin feature_v1.0#在feature_v1.0上开发一些功能
  • 完成feature,合并到develop分支#develop分支获取最新git pull origin develop#切换到develop分支git checkout develop#从feature分支合并到develop分支git merge --no-ff feature_v1.0#删除feature分支,也可以不删除git branch -d feature_v1.0
  • 开始release#从develop拉出一个release分支#可选,获取最新版本。git pull origin developgit checkout -b release_v1.0 develop#fix bugs
  • 完成release,合并到master分支和develop分支,在master打上tag标记#合并到mastergit checkout mastergit merge --no-ff release_v1.0#在master打tag标记git tag release1.0 mastergit push --tags#合并到developgit checkout developgit merge --no-ff release_v1.0
  • 开始hotfix#从主线master拉出一个hotfix分支#可选,获取最新版本。git pull origin mastergit checkout -b hotfix_v1.0.1 master
  • 完成hotfix,合并到master和develop,并在master上打tag#合并hotfix_v1.0.1到mastergit checkout mastergit merge --no-ff hotfix_v1.0.1#在master打上taggit tag hotfix1.0.1 mastergit push --tags#合并hotfix_v1.0.1到developgit checkout developgit merge --no-ff hotfix_v1.0.1
Git Flow工具
  • SourceTree:图形化工具,方便进行Git Flow分支管理操作。
  • GitFlow for Visual Studio:集成在Visual Studio中的插件,支持Git Flow流程。
分支命名规范
  • feature分支:以“feature_”开头,如feature_v1.1。
  • release分支:以“release_”开头,如release_v1.1。
  • hotfix分支:以“hotfix_”开头,如hotfix_20160112。
  • tag标记

    如果是release分支合并,则以“release_”开头,如release_v1.1。

    如果是hotfix分支合并,则以“hotfix_”开头,如hotfix_20160112。

    master分支每次提交都要打tag,命名统一采用小写。

总结
  • 遵循流程:一定要按git flow的流程管理分支,如feature分支开发完合并到develop;发布版本到test环境从develop拉release分支,完成后合并回master和develop分支;修复生产环境问题从master拉hotfix分支,完成后合并回master和develop分支,并在master打tag。
  • 规范命名:按分支命名规范命名,便于管理和维护。
  • 操作方式:了解工作流程后,可不使用git flow GUI工具,手动操作即可,如原生git命令与VS配合操作,给master打tag用git命令,合并分支在VS里操作更方便直观。
  • 保持纯净:保持分支纯净,不随便污染分支。如develop分支只包含要发布到下一个release的代码,拉出release分支前不合并新的feature分支;release分支基于develop分支创建,拉出后不要从develop分支合并新改动,此时develop分支可开始下一个release的准备工作。
  • 多版本并行:若多个版本并行到test环境,可参考相关图示解决。