1. 主要分支介绍

1.1 master分支

主分支,产品的功能全部实现后,最终在master分支对外发布。

1.2 develop分支

开发分支,基于master分支克隆,产品的编码工作在此分支进行。

1.3 release分支

测试分支,基于delevop分支克隆,产品编码工作完成后,发布到本分支测试,测试过程中发现的小bug直接在本分支进行修复,修复完成后合并到develop分支。本分支属于临时分支,目的实现后可删除分支。

1.4 bugfix分支

Bug修复分支,基于master分支或发布的里程碑Tag克隆,主要用于修复对外发布的分支,收到客户的Bug反馈后,在此分支进行修复,修复完毕后分别合并到develop分支和master分支。本分支属于临时分支,目的实现后可删除分支。

1.5 feature分支

功能特征分支,基于develop分支克隆,主要用于多人协助开发场景或探索性功能验证场景,功能开发完毕后合并到develop分支。feature分支可创建多个,属于临时分支,目的实现后可删除分支。

2. 新功能开发工作流

2.1 切换到本地仓库工作区

cd /home/timerhunter/workspace

2.2 从远程仓库克隆代码到本地仓库

git clone https://xxxx@localhost:8443/r/valve/V5-Lora.git

2.3 基于master分支,创建develop分支

/* 切换到master分支 */
git checkout master
/* 基于master分支克隆develop分支,并在克隆完毕后直接跳转到develop分支 */
git checkout -b develop
/* 推送develop分支到远程仓库 */
git push origin develop

注:编码工作主要在develop分支,master分支主要用来发布稳定版本

2.4 在本地仓库的开发流程

完成一个功能点或者一天的工作结束时,将代码提交到本地仓库

/* 提交修改到缓冲区 */
git add .
/* 提交修改到本地仓库 */
/* 如果是修复的BUG,应该在修改说明的最开始添加Bug#ID,多个Bug用逗号分隔,例如Bug#002,003 */
/* 如果是完成了一个指派的任务,应该在修改说明的最开始添加Task#TaskID,例如Task#165 */
git commit -m "Bug#123 修改说明"
/* 每完成一个功能点可以对代码进行打包 */
git tag -m "简要说明增加/修复/删除了什么功能" v0.0.0.170718

注:不是每一个Tag都需要提交到远程仓库,比如可以在完成一个功能点的编码工作后未编译就打一个包,仅存储于本地仓库,在编译成功&测试通过后,再打一个新的Tag包(里程碑Tag包),仅将里程碑Tag包推送到远程仓库

2.5 推送代码到远程仓库

当完成一个功能点或阶段工作时,将代码推送到远程仓库develop分支

/* 执行代码拉取操作,防止代码冲突 */
git pull
/* 解决代码冲突后,推送代码到远程仓库*/
git push origin develop

注:禁止将未编译或编译不通过的代码提交到远程仓库,如果编码工作进行未完成可以提交到本地仓库中,等待该功能点全部实现后再将代码推送到远程仓库中。

2.6 将代码发布到测试分支

阶段性的开发工作已完成,启动小批量测试工作,将代码发布到测试分支release

git checkout develop
git checkout -b release
git push origin release

2.7 测试工程师提交Bug后修复

  • 修复流程同#2.4,#2.5;
  • 注意在git commit时的修复说明中添加Bug#BugID关键字
  • 完成一个Bug修复或完成阶段性工作后,将代码推送到远程分支

2.8 测试工作完成后,合并代码到develop分支

/* 切换到develop分支 */
git checkout develop
/* 执行合并操作,将release分支代码合并到develop分支 */
git merge release
/* 如果合并报错,则解决冲突,冲突解决后继续再次执行合并 */

2.9 开发工作和测试工作都完毕后,将develop分支合并到主线

git checkout master
git merge develop

2.10 阶段开发完毕,打一个里程碑Tag包

/* 创建里程碑Tag */
git tag -m "Task#003 v1.0.0 首版发布" v1.0.0.170718
/* 推送里程碑Tag到远程仓库 */
git push origin v1.0.0.170718

3. 发布后的产品Bug修复工作流

3.1 获取Bug产品的软件发布版本号

3.2 查找里程碑Tag

 /* 查询里程碑及其提交说明 */
git tag -n1 -l v*

3.3 基于里程碑Tag创建分支

 /* git checkout -b [创建的分支名称] [里程碑Tag名称] */
git checkout -b bugfix-v1.0.0.170718 v1.0.0.170718

3.4 修复代码后可以查询修改过的地方

 git diff

3.5 修复完毕后分别合并到develop分支和master分支

/* 合并到develop */
git checkout develop
git merge hotfix-v1.0.0.170718
/* 提交到远程仓库develop分支 */
git push origin develop
/* 合并到master */
git checkout master
git merge hotfix-v1.0.0.170718
/* 提交到远程仓库master分支 */
git push origin master

3.6 创建新的里程碑Tag

 git tag -m "Bug#002 修复某某Bug" v1.0.1.170719
/* 推送到远程仓库 */
git push origin v1.0.1.170719

3.7 删除bugfix分支

/* 删除本地分支-git branch -d [本地分支名]*/
git branch -d bugfix-v1.0.0.170718
/* 删除远程分支-git push origin :[远程分支名]*/
git push origin :bugfix-v1.0.0.170718

目前仅用到这些流程,新学有不足的地方请指出交流。

GitFlow工作流常用操作流程的更多相关文章

  1. Git基本命令和GitFlow工作流

    本篇博客讲解了git的一些基本的团队协作命令,和GitFlow工作流指南 git 团队协作的一些命令 1.开分支 git branch 新分支名 例如,在master分支下,新开一个开发分支: git ...

  2. Gitflow工作流

    什么是Gitflow工作流 Gitflow工作流定义了一个围绕项目发布的严格分支模型.虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架. Gitflow工作流没有用超出功能分 ...

  3. Git工作流指南:Gitflow工作流

    git工作流 1.Git flow 核心分支:master,dev 可能还会有:功能分支,bug修复分支,预发布分支 2.github flow:只一个长期分支,就是master 第一步:根据需求,从 ...

  4. GitFlow 工作流

    1.概述 GitFlow 工作流定义了一个围绕项目发布的严格分支模型.虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架. GitFlow 工作流没有用超出功能分支工作流的概念 ...

  5. git 团队开发常用操作流程(适用于 gogs、gitlab、github)

    git 团队开发常用操作流程(适用于 gogs.gitlab.github) NO1 项目构建者 (1)在远程仓库创建仓库 (2)将伙伴添加到仓库合作者中(无先后要求) (2)cd 到项目将要存放项目 ...

  6. Gitflow 工作流简介

    Gitflow工作流简介 Gitflow工作流通过为功能开发.发布准备和项目维护分配独立的分支,让发布迭代过程更流畅. Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提 ...

  7. gitflow工作流简介

    gitflow工作流是一种依赖于Git版本管理工具,按特定规范对项目开发.测试.上线流程进行管理的工作方式.它是一种为实现规范化管理的约定,它明确了各个分支的意义,使整个团队的分工协作更加和谐明晰. ...

  8. Git之GitFlow工作流

    一. GitFlow 介绍 1.1 什么是 GitFlow GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 . 1.2 GitFlow 常用分支说明 分支名称 分支说明 P ...

  9. Git工作流指南:Gitflow工作流 Comparing Workflows

    Comparing Workflows The array of possible workflows can make it hard to know where to begin when imp ...

随机推荐

  1. Hall 定理

    Hall 定理 是匈牙利算法的基础 大意是说,对于一个二分图 左边的集合记为X,右边的集合记为Y 存在完美匹配,(即匹配数目=min(|X|,|Y|))的充分必要条件是 对于任意一个X的子集,设大小为 ...

  2. BestCoder 2nd Anniversary/HDU 5719 姿势

    Arrange Accepts: 221 Submissions: 1401 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/2 ...

  3. 【WC2019笔记】模拟费用流算法

    在一条数轴上,有 $n$ 只老鼠和 $m$ 个老鼠洞. Q1 每只老鼠都只能往左走,求所有老鼠都进洞的最小代价(代价就是所有老鼠走的距离和). 每个洞只能进一只老鼠. A1 一开始陈江伦老师没说每个洞 ...

  4. [BZOJ]5018: [Snoi2017]英雄联盟 DP

    [Snoi2017]英雄联盟 Time Limit: 15 Sec  Memory Limit: 512 MBSubmit: 270  Solved: 139[Submit][Status][Disc ...

  5. 关于fixed定位的一些错误看法纠正

    之前由于一些误导,一直感觉fixed这个定位在ie8下面是会出现兼容问题的,今天发现这个想法太绝对了,它只是在ie7 8 的怪异模式下面会出现兼容问题 解决这个问题可以通过用absolute来模拟fi ...

  6. Static 静态内部类

    Java中的类可以是static吗?答案是可以.在java中我们可以有静态实例变量.静态方法.静态块.类也可以是静态的. java允许我们在一个类里面定义静态类.比如内部类(nested class) ...

  7. 【CF1068A】Birthday(签到)

    题意:有N种棋子,M个人,已有K种收藏,要求最小的每个人送的棋子数使得最坏情况下至少有L种新的收藏,无解输出-1 N,M,K,L<=1e18 思路: #include<cstdio> ...

  8. UART接口介绍

    1. 简介 UART, Universal Asynchronous Receiver-Transmitter, 通用异步收发传输器 UART协议规定了通信双方所遵守的规定,属于数据链路层RS232接 ...

  9. linux下不是很完美的提高android虚拟机的启动速度

    去年双十一换的新电脑,华硕vivo4000的,配置的不算很好,4k的屏幕:3840×2160, 940M的显卡, core i7的CPU, 8G的内存,硬盘是1T的机械硬盘,除了硬盘基本感觉还可以吧. ...

  10. Linux文件的权限与属性

    由于以前学习Linux的时候没有做比较全面的总结笔记,而且平时大部分工作都在windows上进行,所以关于Linux的一些知识点有所遗忘.近期难得空闲,翻阅书籍,学习<鸟哥的Linux私房菜&g ...