GitFlow工作流常用操作流程
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工作流常用操作流程的更多相关文章
- Git基本命令和GitFlow工作流
本篇博客讲解了git的一些基本的团队协作命令,和GitFlow工作流指南 git 团队协作的一些命令 1.开分支 git branch 新分支名 例如,在master分支下,新开一个开发分支: git ...
- Gitflow工作流
什么是Gitflow工作流 Gitflow工作流定义了一个围绕项目发布的严格分支模型.虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架. Gitflow工作流没有用超出功能分 ...
- Git工作流指南:Gitflow工作流
git工作流 1.Git flow 核心分支:master,dev 可能还会有:功能分支,bug修复分支,预发布分支 2.github flow:只一个长期分支,就是master 第一步:根据需求,从 ...
- GitFlow 工作流
1.概述 GitFlow 工作流定义了一个围绕项目发布的严格分支模型.虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架. GitFlow 工作流没有用超出功能分支工作流的概念 ...
- git 团队开发常用操作流程(适用于 gogs、gitlab、github)
git 团队开发常用操作流程(适用于 gogs.gitlab.github) NO1 项目构建者 (1)在远程仓库创建仓库 (2)将伙伴添加到仓库合作者中(无先后要求) (2)cd 到项目将要存放项目 ...
- Gitflow 工作流简介
Gitflow工作流简介 Gitflow工作流通过为功能开发.发布准备和项目维护分配独立的分支,让发布迭代过程更流畅. Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提 ...
- gitflow工作流简介
gitflow工作流是一种依赖于Git版本管理工具,按特定规范对项目开发.测试.上线流程进行管理的工作方式.它是一种为实现规范化管理的约定,它明确了各个分支的意义,使整个团队的分工协作更加和谐明晰. ...
- Git之GitFlow工作流
一. GitFlow 介绍 1.1 什么是 GitFlow GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 . 1.2 GitFlow 常用分支说明 分支名称 分支说明 P ...
- Git工作流指南:Gitflow工作流 Comparing Workflows
Comparing Workflows The array of possible workflows can make it hard to know where to begin when imp ...
随机推荐
- eclipse快捷键补全
Eclipse中 补全快捷键 默认Alt+/ 但是每个人习惯有所不同 我需要来修改自己熟悉的快捷键 windows->preferences->General->keys将Conte ...
- One-Way Streets (oneway)
One-Way Streets (oneway) 题目描述 Once upon a time there was a country with nn cities and mm bidirection ...
- [寒假集训第一场]gym101606 2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017)
3星场 难度在于英文题面太难读懂了QAQ 看样例猜题意的我 博客园的c++主题真丑 A Alien Sunset \(description\) 有\(n\)个星球,每个星球自转时间不一样,所以一天的 ...
- iOS工程中一天只让进行一次的操作如何做?
转至: iosNSDateNSObject一天一次 整体思路:当进行操作的时候记录操作时间存在偏好设置当中,当再次点击的时候获取现在的时间然后和之前记录的时间进行比较.如果是一天那么就提示“今天 ...
- poj 1743 Musical Theme 后缀自动机/后缀数组/后缀树
题目大意 直接用了hzwer的题意 题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题."主题&qu ...
- 插入排序Insertion sort(转)
插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内 ...
- Linux和Windows兼容
1. 介绍 我们知道Linux上的应用程序是ELF格式的,而Windows则是PE格式 所以要解决这个问题首先二进制加载问题:其次,就是API问题,两者的API完全不同要实现兼容,就需要构建一个虚拟层 ...
- [SaltStack] Crontab部署
salt.states.cron 接着早上安静的时间, 在这里梳理下crontab相关的东东, 主要是crontab的统一管理维护, 包括新增, 修改, 下线等等. 下面就详细看下crontab的sl ...
- AC日记——宠物收养所 bzoj 1208
1208 思路: 一棵splay树: 如果来者是宠物且树空,就将其加入树中: 如果树不空,则查找前驱后继,取最优,然后删点: 对人亦然: 注意边界和取模,最后的ans用long long其余用int即 ...
- Codeforces Gym 101471D Money for Nothing(2017 ACM-ICPC World Finals D题,决策单调性)
题目链接 2017 ACM-ICPC World Finals Problem D (这题细节真的很多) 把所有的(pi,di)按横坐标升序排序. 对于某个点,若存在一个点在他左下角,那么这个点就是 ...