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流程:

  1. 由研发经理通知相关工程师release版本x.x
  2. git fetch
  3. git checkout -b release/x.x origin/release/x.x(拉回release版本)
  4. git pull release/x.x(更新该分支)
  5. 修改测试中发现的BUG
  6. git push origin release/vx.x(修改完后提交分支)
  7. 循环4-5

5.2.紧急debug流程:

  1. 由研发经理通知相关工程师hotfix分支名称x.x.x
  2. git fetch
  3. git checkout -b hotfix/x.x.x origin/hotfix/x.x.x(拉回hotfix分支)
  4. git pull hfx.x(更新hotfix分支)
  5. 在热修复分支下修改bug
  6. git push origin hfx.x(修改完成,提交分支)

    在日常工作中不能修改master分支下得代码

5.3.研发经理:

开发和DEBUG流程同工程师流程

5.3.1.常规分支debug流程:

  1. git pull origin develop(更新develop分支为最新)
  2. git checkout develop(切换到develop分支)
  3. git flow release start x.x(生成一个release分支)
  4. 通知测试和相关得工程师分支名称
  5. git pull origin release/x.x(最终测试完成后拉回分支最新代码)
  6. git flow release finish x.x(最终修改和测试完成后,结束release版本以供发布)
  7. git push origin develo (发布最新的develop)
  8. git push origin master(发布最终得master分支)

5.3.2紧急debug流程:

  1. git pull origin master(更新master分支为最新)
  2. git checkout master(切换到master分支)
  3. git flow hotfix start x.x.x(生成一个hotfix分支)
  4. 通知相关得工程师和测试人员hotfix分支名称
  5. git pull origin hotfix/x.x.x(最终测试完成后拉回分支最新代码)
  6. git flow hot fix finish x.x.x(最终修改和测试完成后,结束hot fix以供发布)
  7. git push origin master(发布最终得master分支)

    在全部的流程中,工程师必须维护自己的feature分支保证代码最新,减少合并时的冲突。

研发经理必须维护release分支,将最新的hotfix都合并进去,保证代码最新,减少合并时的冲突。

在提交代码时还要注意判断对代码的修改是否是自己的,多用diff工具,多查看log,防止代码回溯

Git在公司内部的使用规范的更多相关文章

  1. git在公司内部的使用实践(转)

    从2011.10月左右,开始在后台组推行git版本控制,到现在也差不多半年了,也形成了一套基于git flow的副官模式工作流程: 版本定义: 版本号使用x.x.x进行定义,第一个x代表大版本只有在项 ...

  2. 【转】git在公司内部的使用实践

    版本定义: 版本号使用x.x.x进行定义,第一个x代表大版本只有在项目有重大变更时更新 第二个x代表常规版本有新需求会更新第三个x代表紧急BUG修正一个常见的版本号类似于:0.11.10 分支定义: ...

  3. 公司内部搭建git服务器

    前言 因为gitHub上的项目是公开的,不适合公司内部项目放在上面,而私人的需要收费,这绝非是我们愿意的.所以找了个跟gitHub很相似,但是又免费的gitLab.现在将搭建gitLab过程记录一下留 ...

  4. .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器

    使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言     Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...

  5. 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本

    jixiaohua发了一篇一个老鸟也发了一份他给公司内部小伙伴整理的路线图.另一份 Android 开发学习路线图.可惜不是MarkDown格式的,所以jixiaohua直接上传的截图,在jixiao ...

  6. Rafy 领域实体框架 - 公司内部培训视频

    本月给公司内部一个项目做架构重构,其中使用到了 Rafy 框架.所以我培训了 Rafy 领域实体框架的使用方法,过程中录制了视频,方便其他同事查看.现在把视频放到园里来分享下,有兴趣的朋友可以看看,有 ...

  7. 搭建公司内部的NuGet Server

    随着公司业务慢慢的拓展,项目便会越来越来多,很多项目会依赖其他项目DLL,比如一些底层的技术框架DLL引用,还有各业务系统的也有可能会有引用的可能. 项目多,交叉引用多,如果要是有一个DLL更新,那就 ...

  8. 公司内部培训AlwaysOn PPT分享

    公司内部培训AlwaysOn PPT分享 下载地址: http://files.cnblogs.com/files/lyhabc/alwayson.ppt

  9. 公司内部培训SQL Server传统索引结构PPT分享

    公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E ...

随机推荐

  1. 吴裕雄--python学习笔记:爬虫包的更换

    python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...

  2. 解决android 无法打开 DDMS 中的data目录

    把上面操作一遍就可以了,如果还是不行你可以检查下 su 是不是输入错误了.

  3. webdriver访问各个浏览器驱动下载及安装

    这里首先需要查看一下自己安装的selenium版本 查看步骤: windows系统打开cmd命令行输入:pip show selenium查看结果如下: 进入到selenium官网查看版本信息 sel ...

  4. 复合文字(Compound Literals)

    复合文字(Compound Literals) 阅读代码时发现了这行 1 setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&(int){1},sizeof(in ...

  5. 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 ...

  6. 11. 无数人难办事? - 迪米特法则(LoD)

    11.1 第一天上班 时间: 4月2日19点   地点: 小菜大鸟住所的客厅   任务: 小菜, 大鸟      "回来啦! 怎么样? 第一天上班感受多吧." 大鸟关关心的问道.  ...

  7. RPi.GPIO 和 HM

    后续笔记不再记录导入的模块和硬件的连接方法,请根据关键词自行搜索. RPi.GPIO模块 GPIO:General Purpose Input Output 即 通用输入/输出 RPi.GPIO是一个 ...

  8. Fragment argument

    每个Fragment实例都可以附带一个Bundle对象,该bundle包含键值对,可以像附加extra到Activity的intent中那样使用他们.一个键值对即一个argument. 创建frage ...

  9. 一步一步理解AdaBoosting(Adaptive Boosting)算法

    最近学习<西瓜书>的集成学习之Boosting算法,看了一个很好的例子(https://zhuanlan.zhihu.com/p/27126737),为了方便以后理解,现在更详细描述一下步 ...

  10. WebAPI-处理架构

    带着问题去思考,大家好! 问题1:HTTP请求和返回相应的HTTP响应信息之间发生了什么? 1:首先是最底层,托管层,位于WebAPI和底层HTTP栈之间 2:其次是 消息处理程序管道层,这里比如日志 ...