Git版本管理总有问题,建议使用Git Flow
Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。
当前各大公司对软件源码的版本管理都采用git来管理,因此git的使用必不可少,在一些项目开发中,可能存在git使用流程的不合理,导致代码版本管理混乱,容易造成代码冲突,甚至带来线上bug等,因此一旦当我们的项目在git管理后仍然存在很多问题的时候,就可以考虑采用git flow的标准流程。
什么是git flow
Git Flow 其实是一种规范化分支管理模型的方案。他的出现是在Vincent Driessen 曾经写过一篇博文,题为“A successful Git branching model”。
我们先来看一下Vincent Driessen提出的git flow流程图
上图中,有几个分支,他们的作用如下:
- master 分支:用于生产环境的分支,这个分支只能从其他分支合并代码,不允许直接修改。
- hotfix 分支:当生产环境发现线上的 bug 的时候,则需要创建一个 hotfix,修复bug完成 后,将hitfix分支合并回 master 和 develop 分支。
- release 分支:用于测试环境分支,当develop 分支完成后,则将develop合并到 release 分支提测。测试中的 bug ,在release分支修复,bug修复通过后,再合并release分支到 master 和 develop 分支。
- develop 分支:开发环境分支,用于拉出一个一个 feture 分支进行新功能开发。
- feature 分支:该分支主要是用来开发一个新的功能,一般从 develop 分支拉取,开发完成合并到 develop。
那么git flow怎么使用呢?
git flow中master 和 develop 分支是长期存在的分支,都需要保证稳定性。
如果有新功能需要开发,则基于 develop 拉取 feature 分支进行开发,开发完成后,合并到 develop 分支,并删除 feature 分支。
功能开发完成后,进行提测,基于 develop 分支拉去 release 进行提测。如果提测中发现的 bug,在 release 分支进行修复,测试通过后,将 release 分支合并到 develop 分支和 master 分支。
最后在 master 分支上打标签用于发布,并删除 release 分支。若后续线上发现 bug,则基于 master 拉取 hotfix 分支,问题在 hotfix 分支上修复完成后,将 hotfix 分支合并到 master 分支和 develop 分支。
git flow工具
由于上述过程非常标准,同时又有一定的繁琐,如果团队成员都非常遵守约定,可以做一些调整和简化;如果有些团队成员约定性不是很强,我们可以采用git flow工具来强制项目使用git flow标准流程。
git flow工具:http://danielkummer.github.io/git-flow-cheatsheet/
大家可以按照官网地址进行操作,与git 无异,本文只做简单介绍,git flow中的命令如下图
![](https://s2.51cto.com/oss/202011/23/364e67d8ef185d19c1c4d99fee505b6c.png)
![](https://s2.51cto.com/oss/202011/23/213811d91ffcc0ac9008b73ea7e3f061.png)
![](https://s2.51cto.com/oss/202011/23/d7764853451b6b15b94c6724c380c9aa.png)
命令汇总如下:
![](https://s6.51cto.com/oss/202011/23/848a08e8bbbf11c9291c40fe72a474df.png)
最后,适合的才是最好的,不要任何时候都直接采用git flow,毕竟流程还是相对复杂一些的。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击