基于git的简单实用的版本管理规范及流程,包括:代码库的分布、人员角色的划分、代码提交合并流程、代码冲突处理、分支管理。

代码库分类

根据代码库分布的位置及作用,分为以下几类:

  • 主库:位于服务端,所有开发的代码最终都要合到主库。
  • 个人代码库(服务端):从主库fork出来,位于服务端。每个人自已开发的代码,由本地的git库push到每个人自己的个人代码库(服务端),再由个人代码库(服务端)合入主加。
  • 个人工作库:位于每个开发人员的开发机器,从个人代码库(服务端)clone到本地。每个开发人员开发的代码,先commit到个人工作库,再由个人工作库push到个人代码库(服务端)。

人员角色分类

这里说的角色,都是人员在主库上的角色。基于简化的原则,人员分为三类:

  • Owner:拥有主库的所有权限。
  • Committer:具有将开发人员的合并需求(MR)合入主库的权限。基于安全考虑,我们设置为只能通过MR的方式将代码合入主库,而不能直接push到主库。
  • Developer:只能从自己的个人代码库(服务端)提交合并代码的请求(MR),是否能够合入,由Committer进行审核。

基本流程

在主库已经存在的情况下,日常操作流程如下:

1、开发人员从主库fork出自己的个人代码库。

2、开发人员将自己的个人代码库clone到本地,即个人工作库。

3、开发人员在开发了新代码后(包括新增和修改),先将代码commit到自己的个人工作库,再由个人工作库push到个人代码库。

4、开发人员提交从个人工作库到主库的MR,Committer审核后,决定是否将MR合入主库。

5、每个开发人员从主库pull最新代码到个人工作库。

分支管理

  • 主库缺省的master分支,是用来向生产环境发布的,所有合入的代码,原则上都必须是稳定的。
  • 主库除了master分支外,至少还要有一个活动分支,命名建议为:br_工程名_active,平时日常的开发都基于活动分支开发。即从个人工作库提交MR到主库时,指向的是主库的活动分支。活动分支测试稳定后,将主库的活动分支通过MR的形式,合并到主库的master分支,同时打上tag。
  • 如果软件运行过程中发现必须立即修改的bug,则从主库的master分支中,拉出一个bugfix分支。为修复这个bug的所有开发,都基于bugfix分支。待bugfix分支开发完成,并测试稳定后,将bugfix分支以MR的方合入主库的master分支。然后删除bugfix分支,视情况决定是否打tag。

常见问题

此部分内容会根据情况进行相应的增加。

活动分支合入主分支时发生冲突

产生原因

平时基于活动分支开发,如果这个过程中为了修复bug而拉了一个bugfix分支,当bugfix分支开发完成并合入master分支后,如果bugfix分支和活动分支修改了相同的文件,则在活动分支合入master分支时就会产生冲突。

解决方法

1、从个人代码库(服务端)clone一个库到本地,即专门用于合并的个人工作库。(也可以用之前的个人工作库,但初学都容易混淆,建议单独clone一个。)

2、从主库的活动分支上pull最新的代码到本地。

3、从主库的master分支上pull最新的代码到本地。

4、此时会产生冲突,手工修复冲突,然后先commit到本地的个人工作库,再push到个人代码库(服务端)。

5、提交从个人工作库(服务端)到主库的MR(此时不会再有冲突),然后由Committer审核后将MR合入主库。

基于git的代码版本管理规范及流程-简版的更多相关文章

  1. GIT库代码管理规范

    GIT库代码管理规范 一. 规范要求 1. 每个项目建立单独的GIT库.每个GIT库包括两条线,命名规则如下: 开发线(测试):项目名称_DEV 生产线(正式):项目名称 2. 每条线只允许增量不允许 ...

  2. 使用Git进行代码版本管理及协同工作

    Git简介: git是一种较为先进的代码版本管理及协同工作平台,采用分布式文件块存储: 1.  分布式: 代码保存在所有协同成员的计算机上,网速较差时依然可用:而传统的集中式代码版本管理系统则较难脱离 ...

  3. git commit 代码提交规范

    格式 type: description 1. type 类型 type 是 commit 的类别,只允许如下几种标识: fix: 修复bug add: 新功能 update: 更新 refactor ...

  4. Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码

    前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...

  5. Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践

    结合Git使用Bitbucket进行代码版本管理流程规范与实践   By:授客 QQ:1033553122   目录 目录 1 一. 测试环境 2 二. 新建项目 2 三. 新建公有版本库 3 四. ...

  6. PHP 代码规范、流程规范、git规范

    1. 命名规范 (1).变量命名规范 1.变量使用驼峰命名法 禁止使用拼音或者拼音加数字 2.变量也应具有描述性,杜绝一切拼音.或拼音英文混杂的命名方式 3.变量包数字.字母和下划线字符,不允许使用其 ...

  7. 基于git diff进行的eslint代码检测

    缘起 在项目中, 通常都会使用代码检测工具来规范团队的代码风格, 比如eslint.随着代码的不断增加, eslint进行代码检测的时间也越来越久.每次检测的时候, 需要检测的文件和实际检测的文件极度 ...

  8. 基于git的工作流程

    本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...

  9. 实验一  GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

随机推荐

  1. 树莓派.系统.修改声音输出通道(auto,hdmi,耳机接口)

    树莓派平时通过耳机接口一直在正常使用 有一天外接了一个HDMI的屏幕, 结果耳机接口连着的音箱突然就没声音了,在网上查了资料,发现原来树莓派声音输出有3种模式 记录如下: 在命令行终端上输入下面命令将 ...

  2. python函数前篇

    函数:函数是指将一组语句的集合通过一个函数名封装起来,要想执行这个函数,只需调用其函数名即可 函数特性: 减少重复代码 使程序变得可扩展 使程序变得易维护 什么是函数? 函数就是具备某一特定功能的工具 ...

  3. 使用Identity Server 4建立Authorization Server (1)

    预备知识: http://www.cnblogs.com/cgzl/p/7746496.html 本文内容基本完全来自于Identity Server 4官方文档: https://identitys ...

  4. 一键生成koa/koa2项目:

    一键生成koa/koa2项目: 1. npm install -g koa-generator 2.新建项目目录 koa mytest (koa1项目) koa2 koa2test (koa2项目) ...

  5. Number 类型

    Javascript使用IEEE -754格式存储整型和浮点型(有些语言称为双精度) 因为这种存储格式,所以javascript中有正的0和负的0   整型也可以存储八进制和十六制   八进制第一个数 ...

  6. WebP 的前世今生

    除了视频,图片占据了 PC 和 App 的大部分流量,为运营方带来高额的成本支出,同时过多的图片加载会影响到网站与 App 的加载速度.因此在保证图片质量的前提下缩小图片的体积就成了迫在眉睫的事情. ...

  7. Python做的第一个小项目-模拟登陆

    1. 用户输入帐号密码进行登陆 2. 用户信息保存在文件内 3. 用户密码输入错误三次后锁定用户 主要采用循环语句和条件语句进行程序流程的控制,加入文件的读写操作 while True: choice ...

  8. form提交地址地址正确但是依旧报错404找不到路径

    ---恢复内容开始--- 我的jsp中保含了">="和"<="符号,form提交的时候会有个标签校验,如下: private static bool ...

  9. python中pygame模块的Linux下安装过程

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

  10. [转]移动前端开发之viewport的深入理解

    今天去面试,被问到一个用了一万次的东西,然而我并不了解具体是个毛毛,看这一篇豁然开朗. DevicePixelRatio 以及这句话:移动设备上的viewport分为layout viewport  ...