Git在公司内部的使用规范
Git在公司内部的使用规范
1.版本定义
版本号使用x.x.x.x进行定义.
- 第一个x代表大版本只有在项目有重大变更时更新;
- 第二个x保留;
- 第三个x代表常规版本有新求会更新;
- 第四个x代表紧急Bug修正;
一个常见的版本号类似于:0.0.10.11
2.系统开发环境
简称 | 全称 | 作用 |
---|---|---|
DEV | Development environment | 用于开发者调试使用 |
FAT | Feature Acceptance Test environment | 功能验收测试环境,用于测试环境下的软件测试者测试使用 |
UAT | User Acceptance Test environment | 用户验收测试环境,用于生产环境下的软件测试者测试使用 |
PRO | Production environment | 生产环境 |
3. 分支定义
分支 | 名称 | 作用 |
---|---|---|
master | 主分支 | 用于生产部署,最新稳定版本,一般由 release 或 hotfix 分支合并,任何情况下不允许直接在 master 分支上修改代码。 |
release | 预上线分支 | 预上线分支,是develop与master之间的一个缓冲,始终保持与 master 分支一致,一般由 develop 或 hotfix 分支合并,不建议直接在 release 分支上直接修改代码。(UAT) |
hotfix | 紧急修复分支 | 紧急分支,名规则为 hotfix- 开头,从master生成,bug修正后自动合并到master和develop并且生成tag; |
develop | 测试分支 | 功能验收测试环境,用于测试环境下的软件测试者测试使用,可根据需求大小程度确定是由 feature 分支合并,还是直接在上面开发。,FAT,如果开发工时 < 1d,直接在 develop 开发,如果开发工时 > 1d,那就需要创建分支,在分支上开发。 |
feature | 需求开发分支 | 用于开发新需求和需要较长时间的BUG修改,(正式环境) 测试通过后,研发人员需要删除 feature- 分支。 |
4.Commit 日志规范
提交信息一定要认真填写!
建议参考规范:(scope):
比如:fix(首页模块):修复弹窗 JS Bug。
type 表示 动作类型,可分为:
fix:修复 xxx Bug
feat:新增 xxx 功能
test:调试 xxx 功能
style:变更 xxx 代码格式或注释
docs:变更 xxx 文档
refactor:重构 xxx 功能或方法
scope 表示 影响范围,可分为:模块、类库、方法等。
subject 表示 简短描述,最好不要超过 60 个字,如果有相关 Bug 的 Jira 号,建议在描述中加上。
5.开发工作流程:
git flow feature start xxxxx(开始新需求)
在feature/xxxxx分支下进行开发
git flow feature finish xxxxx(开发完成后等待研发经理确认可以完成时执行)
git push origin develop(发布develop分支)
每天工程师都需要git pull origin develop来更新develop分支,然后将develop分支合并到你正在开发得feature/xxxxx分支上来保持代码最新
切记不能直接在develop上进行开发
5.1.常规分支debug流程:
- 由研发经理通知相关工程师release版本x.x
- git fetch
- git checkout -b release/x.x origin/release/x.x(拉回release版本)
- git pull release/x.x(更新该分支)
- 修改测试中发现的BUG
- git push origin release/vx.x(修改完后提交分支)
- 循环4-5
5.2.紧急debug流程:
- 由研发经理通知相关工程师hotfix分支名称x.x.x
- git fetch
- git checkout -b hotfix/x.x.x origin/hotfix/x.x.x(拉回hotfix分支)
- git pull hfx.x(更新hotfix分支)
- 在热修复分支下修改bug
- git push origin hfx.x(修改完成,提交分支)
在日常工作中不能修改master分支下得代码
5.3.研发经理:
开发和DEBUG流程同工程师流程
5.3.1.常规分支debug流程:
- git pull origin develop(更新develop分支为最新)
- git checkout develop(切换到develop分支)
- git flow release start x.x(生成一个release分支)
- 通知测试和相关得工程师分支名称
- git pull origin release/x.x(最终测试完成后拉回分支最新代码)
- git flow release finish x.x(最终修改和测试完成后,结束release版本以供发布)
- git push origin develo (发布最新的develop)
- git push origin master(发布最终得master分支)
5.3.2紧急debug流程:
- git pull origin master(更新master分支为最新)
- git checkout master(切换到master分支)
- git flow hotfix start x.x.x(生成一个hotfix分支)
- 通知相关得工程师和测试人员hotfix分支名称
- git pull origin hotfix/x.x.x(最终测试完成后拉回分支最新代码)
- git flow hot fix finish x.x.x(最终修改和测试完成后,结束hot fix以供发布)
- git push origin master(发布最终得master分支)
在全部的流程中,工程师必须维护自己的feature分支保证代码最新,减少合并时的冲突。
研发经理必须维护release分支,将最新的hotfix都合并进去,保证代码最新,减少合并时的冲突。
在提交代码时还要注意判断对代码的修改是否是自己的,多用diff工具,多查看log,防止代码回溯
Git在公司内部的使用规范的更多相关文章
- git在公司内部的使用实践(转)
从2011.10月左右,开始在后台组推行git版本控制,到现在也差不多半年了,也形成了一套基于git flow的副官模式工作流程: 版本定义: 版本号使用x.x.x进行定义,第一个x代表大版本只有在项 ...
- 【转】git在公司内部的使用实践
版本定义: 版本号使用x.x.x进行定义,第一个x代表大版本只有在项目有重大变更时更新 第二个x代表常规版本有新需求会更新第三个x代表紧急BUG修正一个常见的版本号类似于:0.11.10 分支定义: ...
- 公司内部搭建git服务器
前言 因为gitHub上的项目是公开的,不适合公司内部项目放在上面,而私人的需要收费,这绝非是我们愿意的.所以找了个跟gitHub很相似,但是又免费的gitLab.现在将搭建gitLab过程记录一下留 ...
- .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器
使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言 Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...
- 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本
jixiaohua发了一篇一个老鸟也发了一份他给公司内部小伙伴整理的路线图.另一份 Android 开发学习路线图.可惜不是MarkDown格式的,所以jixiaohua直接上传的截图,在jixiao ...
- Rafy 领域实体框架 - 公司内部培训视频
本月给公司内部一个项目做架构重构,其中使用到了 Rafy 框架.所以我培训了 Rafy 领域实体框架的使用方法,过程中录制了视频,方便其他同事查看.现在把视频放到园里来分享下,有兴趣的朋友可以看看,有 ...
- 搭建公司内部的NuGet Server
随着公司业务慢慢的拓展,项目便会越来越来多,很多项目会依赖其他项目DLL,比如一些底层的技术框架DLL引用,还有各业务系统的也有可能会有引用的可能. 项目多,交叉引用多,如果要是有一个DLL更新,那就 ...
- 公司内部培训AlwaysOn PPT分享
公司内部培训AlwaysOn PPT分享 下载地址: http://files.cnblogs.com/files/lyhabc/alwayson.ppt
- 公司内部培训SQL Server传统索引结构PPT分享
公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E ...
随机推荐
- 吴裕雄--python学习笔记:爬虫包的更换
python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...
- 解决android 无法打开 DDMS 中的data目录
把上面操作一遍就可以了,如果还是不行你可以检查下 su 是不是输入错误了.
- webdriver访问各个浏览器驱动下载及安装
这里首先需要查看一下自己安装的selenium版本 查看步骤: windows系统打开cmd命令行输入:pip show selenium查看结果如下: 进入到selenium官网查看版本信息 sel ...
- 复合文字(Compound Literals)
复合文字(Compound Literals) 阅读代码时发现了这行 1 setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&(int){1},sizeof(in ...
- Win10+GTX906M+Tensorflow-gpu==2.1.0
环境 Windows10 GeForce GTX 960M python 3.7.6 tensorflow-gpu==2.1.0 CUDA 10.2 cuDNN v7.9.4.38 for windo ...
- 11. 无数人难办事? - 迪米特法则(LoD)
11.1 第一天上班 时间: 4月2日19点 地点: 小菜大鸟住所的客厅 任务: 小菜, 大鸟 "回来啦! 怎么样? 第一天上班感受多吧." 大鸟关关心的问道. ...
- RPi.GPIO 和 HM
后续笔记不再记录导入的模块和硬件的连接方法,请根据关键词自行搜索. RPi.GPIO模块 GPIO:General Purpose Input Output 即 通用输入/输出 RPi.GPIO是一个 ...
- Fragment argument
每个Fragment实例都可以附带一个Bundle对象,该bundle包含键值对,可以像附加extra到Activity的intent中那样使用他们.一个键值对即一个argument. 创建frage ...
- 一步一步理解AdaBoosting(Adaptive Boosting)算法
最近学习<西瓜书>的集成学习之Boosting算法,看了一个很好的例子(https://zhuanlan.zhihu.com/p/27126737),为了方便以后理解,现在更详细描述一下步 ...
- WebAPI-处理架构
带着问题去思考,大家好! 问题1:HTTP请求和返回相应的HTTP响应信息之间发生了什么? 1:首先是最底层,托管层,位于WebAPI和底层HTTP栈之间 2:其次是 消息处理程序管道层,这里比如日志 ...