`
情情说
  • 浏览: 37720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

git分支管理和工作流规范:具体规范

git 
阅读更多

 

前一篇介绍了 git相关的概念,我们可以查看文件的状态,在各个状态之间进行切换,可以创建和合并分支,通过rebase还可以整理自己的提交历史。通过这些命令和操作,就可完成工作流规范规定的操作流程了。

本篇介绍具体的规范,包括分支的划分和命名规范,不同类型的分支应对不同的场景,然后会介绍下工作流工具git-flow,如何简化我们的操作。

分支构成

master和develop分支一直存在,且名称不会变化,一般不直接修改这2个分支,由其他分支合并而来。

feature、release、hotfix分别用于功能点开发、优化,特定版本测试,线上问题紧急处理,同一类型的分支会产生多个。

分支划分如下:

  • master:与线上版本保持绝对一致;
  • develop:开发分支,由下文提到的release、feature、hotfix分支合并过后的代码;
  • feature:实际功能点开发分支,建议每个功能新建一个feature, 具有关联关系的功能公用一个feature分支;
  • release:每一次开发完成之后,从develop创建出来的分支,以此分支为基准,进行测试;
  • hotfix:该分支主要用于修复线上bug;

命名规范约定如下:

  • feature分支命名:feature/name
  • release分支命名:release/name
  • hotfix分支命名:hotfix/name

比如有一个「优化分布式Session」的需求,可在develop分支的基础上创建新分支 feature/optimize_distributed_session进行开发,开发完成后合并到develop分支。

分支详细介绍和处理流程

master分支

主分支,与线上运行的版本始终保持一致,任何时候都不要直接修改master分支。

一个版本的release分支、hotfix分支开发完成后,会合并代码到master分支,也就是说master分支主要来源于release分支和hotfix分支。

develop分支

开发分支,始终保持最新完成以及bug修复后的代码,新增功能时基于该分支创建feature分支。

一个版本的release分支、hotfix分支开发完成后,也会合并到develop分支,另外,一个版本的feature功能开发完成后,也会合并到develop分支。也就是说develop分支来源于feature、release、hotfix分支。

feature分支

开发新功能或优化现有功能时,会创建feature分支,以develop为基础创建。一般会有多个功能同时开发,但上线时间可能不同,在适当的时候将特定的feature分支合并到develop分支,并创建release分支,进入测试状态。

release分支

当一组feature开发完成,会首先合并到develop分支,开始进入提测阶段时,会创建release分支。

以release分支代码为基准提测,测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。

测试完成之后,合并release分支到master和develop分支,此时master为最新代码,用作上线。

hotfix分支

线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。

特殊情况处理和注意点

develop分支已存在未上线的feature代码, 此时需要紧急上线一个新功能, 但develop的代码不能上,如何处理 ?

  • 以master为基线创建feature, 在完成之后,代码合并到master分支;
  • 为了保证develop是最新代码,需要从master合并到develop分支;

以develop为基线,创建了f1和f2两个feature分支之后, f1,f2开发一半的时候,发现两个分支代码需要有依赖怎么办 ?

  • 最好在开发开始前确定两个功能是否相关,若相关则只创建一个分支,两个功能在一起开发;
  • 如果已经创建,则需要合并到一个分支;

一定要保证commit历史记录的整洁,代码合并时,根据情况选择merge或rebase;

使用rebase注意,一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作;

提交说明规范:

  • 提交说明最好限制在一行以内,50个字符以下,简明扼要地描述更新内容,空开一行后,再展开详细注解;
  • 如果关联jira,写上jira地址;

git-flow工作流

git-flow工具

上面的流程在第一次接触时,会觉得有点复杂,通过git-flow工具可以把这些流程自动化。它是一个命令行工具,支持各个平台,比如OSX、Linux、Windows等支持。

初始化

通过 git flow init 命令进行初始化,以交互式的方式进行,主要是约定分支的命名,建议使用默认值;

开发新功能

git flow feature start f1 添加新特性,这个操作创建了一个基于develop的特性分支,并切换到这个分支之下。

git flow feature finish f1 完成新特性,这个操作会合并f1分支到develop分支,并删除特性分支,切换回develop分支。

git flow feature publish f1 发布新分支,发布新特性分支到远程服务器,其它用户也可以使用这分支。

发布版本

git flow release start r1 [BASE] 创建发布版本,[BASE]是以哪个分支或commit为基础进行发版,一般为develop。

git flow release publish r1 发布release分支,其他同事就可以看到这个分支,并修改一些小问题。

git flow release finish r1 完成release分支,会合并release分支到master分支,用release分支名打Tag,合并release分支到 develop分支,最后移除release分支。

修复线上问题

有可能需要修正 master 分支上某个 TAG 标记的生产版本。

git flow hotfix start VERSION [BASENAME] 创建hotfix分支,VERSION 参数标记着修正版本,[BASENAME]为finish release时填写的版本号。

git flow hotfix finish VERSION,当完成紧急修复分支,代码合并到develop和 master分支。相应地,master分支打上修正版本的 TAG。

git flow命令

欢迎扫描下方二维码,关注我的个人微信公众号 ~

 


情情说

 

 

分享到:
评论

相关推荐

    Git flow 工作流与规范.md

    对Git flow 工作流解析与使用基本规范 Git Flow有主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。

    git_workflow:Git工作流

    春雨Git工作流 <iframe id="embed_dom" name="embed_dom" frameborder="0" style="border:1px solid #000;display:block;width:430px; height:320px;" src=" Git工作流 从develop主干checkout新feature分支 TODO ...

    蜂箱流:git分支过程和CLI工具

    Beehive Flow是一个git分支过程和一个支持CLI工具。 它是针对打包的软件和库而设计的,尤其是那些具有许多以前版本且需要积极支持的库。 Beehive Flow对项目的版本号以及在分支过程中如何更改版本进行规定。 在此...

    Git权威指南PDF完整版

    26.2.2 Git工作分支和 Subversion 如何对应/ 388 26.2.3 其他辅助文件/ 390 26.3 多样的 git-svn 克隆模式/ 390 26.4 共享 git-svn 的克隆库/ 393 26.5 git-svn 的局限/ 394 第5篇 搭建Git服务器 第27章 使用 HTTP ...

    git-commit-style-guide:使git commit消息更易读和有用

    统一团队的Git工作流,包括分支使用,标签规范,问题等Git commit日志参考案例总体方案Git提交日志基本规范(): <subject><BLANK><body><BLANK><footer>所有的类型类型如下: 类型代表某人次提交的类型,某种是...

    git flow的基本概念及使用.md

    使用Git flow 流开发Git Flow 就是如何使用git 分支的一种规范,或者叫做推荐。简单来说就是通过规范化的流程,使得产品、开发与测试等各个部门更高效的协同工作。

    SBOL-specification:合成生物学开放语言(SBOL)

    更新规范的工作流程是在主数据库上克隆,编辑和提交请求请求。 SBOL开发社区的成员可以使用问题跟踪器来标记现有规范中的问题,并查看正在考虑的正在进行中的问题。 提交对规范的更改 在撰写不重要更改的文字之前,...

    Java后端开发库,涵盖:常用工具类、SPI扩展、分布式锁、限流、分布式链路追踪等。.zip

    通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...

    circleci-monorepo:使用条件工作流和管道参数的CircleCI的monorepo示例

    改进了CI工作流状态的计算,该工作流状态在所有作业成功时都将视为成功。 当至少一项作业成功时,当前脚本认为工作流成功。 可以自定义具有高级路径规范的软件包列表,该列表允许列出每个软件包的多个路径以及排除...

    URULE是一款基于RETE算法的纯Java规则引擎.zip

    通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...

    基于Vue+TypeScript开发的音乐视频推荐平台源码(毕设项目).zip

    基于Vue+TypeScript开发的音乐视频推荐... - `workflow` 工作流改进 - `ci` 持续集成 - `types` 类型定义文件更改 - `wip` 开发中 ## 浏览器支持 本地开发推荐使用`Chrome 80+` 浏览器 支持现代浏览器, 不支持 IE

    bicep-types-az:ARM资源的Bicep类型定义

    通常,您需要将此git ref输入保留为该工作流的“ master”。 约2小时后,此操作将从名为autogenerate的分支在此回购中生成PR。 若要解决,请关闭PR并将其打开以触发“合并验证”运行。 合并公关。 可以通过查看 ...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    git 项目管理 maven Nexus Jenkins 工作软件 反编译软件 office系列 下载器 adobe系列 记录软件 思维导图 office--Note 邮件管理 性能优化 分层优化 系统级别 中间件级别 JVM级别 代码级别 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 迭代器协议和for循环工作机制 06 迭代器补充 07 三元运算,列表解析,生成器表达式 第19章 01 生成器函数 02 生成器函数的好处 03 母鸡下蛋的传说 04 生成器特性阐释 05 生产者消费者模型 06 第三次作业讲解 ...

    imeapi_draft

    这个存储库是官方规范的副本,用于我自己使用 git 工作流。 我不时同步到上游。 该草案通过 gh-pages 分支发布在上。

Global site tag (gtag.js) - Google Analytics