Git版本控制规范

85 阅读9分钟

一、git安装及介绍

1.卸载git步骤:

先删除环境变量中与git有关的变量再通过控制面板卸载即可。

2.下载git

官网:git-scm.com/downloads 由于官网下载太慢我通过淘宝的开源镜像下载 网址:npm.taobao.org/mirrors/git…

下载版本根据自己的需求选择即可。

image.png

3.安装git

next ->修改安装目录(或默认安装在C:\Program Files\Git)->接下来一直next 直至安装完毕

image.png

4.配置git

点击电脑左下角开始即可看见Git Bash

image.png

ps:Git CMD 是windows 命令行的指令风格  而Git Bash 是linux系统的指令风格(个人建议使用Git Bash)Git GUI是图形化界面(新手学习不建议使用)

打开Git Bash 后如下图所示即代表安装完成

image.png

接下来配置用户名和邮箱(用于git识别你的身份)

git config --global user.name  "自己的用户名"

git config --global user.emal  "自己的邮箱"

输入后没有报错即代表设置成功

image.png

通过git config -l 检查一下是否配置成功 至此git安装及配置全部完成。

image.png

补充:

git修改默认编辑器指令:git config –global core.editor vim (编辑器名)

5.连接远程仓库

(展示使用的是gitee码云,其他平台同理)

先生成ssh公钥,打开Git Bash 输入命令 ssh-keygen -t rsa 随后一直空格即可

image.png

2,找到图中地址目录 用记事本打开该文件

image.png

打开后复制所有内容

image.png

然后登录码云 网址:gitee.com/ ——>点击设置

image.png

点击左下角SSH公钥

image.png

接下来按下图操作,最后看见验证成功弹窗即代表密钥绑定成功

image.png

二、git基本使用流程

  • 先搭建好远程仓库
  • 在本地文件先进行git初始化 使用指令git init
  • 添加文件到work tree 使用指令 git add .(符号 “点"代表全部添加)
  • 提交文件到本地仓库  使用指令 git commit -m "要提交的信息"
  • 查看状态 使用指令 git status
  • 提交到远程仓库  使用指令 git push -u origin master
  • 在本地文件先进行git初始化 使用指令git init
  • 从仓库拉区文件 使用指令 git clone 要克隆的仓库ssh链接
  • 拉取更新的代码 使用指令git fetch origin (取回服务器端最新代码)
  • 更新代码到本地仓库 使用指令 git pull origin master (表示同步到自己的本地master版本)

//git使用参考文档:git.mydoc.io/?t=180676、

//使用参考图:

image.png

三、版本控制规范

1.分支管理

每个项目有两个永久分支和多个临时分支,各个分支介绍如下:

Master 分支

主分支,保存的是最近已发布到生产环境的代码,最近发布的 Release,会使用 tag 来记录发布的版本。master 分支是不允许提交代码的,只能将代码合并到 master。 该分支的代码与代码与生产环境的版本保持一致,只有该项目的 master 管理员有权限处理该分支内容。

注意: 所有向 master 分支的 Push 推送都应当打TAG 标签做记录,方便追溯。

Develop(dev)分支

主开发分支,基于 master 创建,是所有开发分支的母体。 通常情况下,只在 develop 上开发一些基础的代码。而对于一些新的功能,不直接在 develop 上开发,而是在feature 开发,开发完成后合并到 develop 分支。

Release分支【临时分支】

发布分支 基于 develop 创建,用于准备发布新阶段版本。当一次迭代的功能开发并自测完成后,就可以创建发布分支。该分支通常用于测试,我们不能在该分支上完成除 Bug 修复外的其他工作。 Release 分支基于Develop 分支创建,打完Release 分支之后,我们可以在这个Release 分支上测试,修改 Bug 等。 发布 Release 分支时,合并 Release 到 Master 和 Develop, 同时在 Master 分支上打个 Tag 记住 Release 版本号,然后可以删除 Release 分支了。

注意: 一旦打了 Release 分支之后不要从 Develop 分支上合并新的改动到 Release分支。

Hotfix 分支【临时分支】

修复分支,从 master 创建。当我们在生产环境发现 Bug 的时候,会从 master 分支上对应的 tag 处创建新的 hotfix 分支,用来修复 bug。完成 Hotfix 后,合并回 Master 和 Develop 分支,所以 Hotfix 的改动会进入下一个 Release。 合并回 Master 和 Develop 分支后,删除 Hotfix 分支。

注意: 合并完成后,须在Master 上打一个tag。

Feature分支【临时分支】

功能分支,从 develop 创建。主要是用来开发新的功能,开发完成后,会合并回Develop 分支。 Feature 分支做完后,必须合并回 Develop 分支, 合并完分支后删掉这个 Feature 分支。

注意: 上述提到的 Tag,用于记录每次发布的版本,须与应用、产品版本号对应。

2.开发规范

Commit原则

在具体开发工作中主要需要遵守的原则就是使每次提交都有质量,需做到以下几点:

  1. 提交时的粒度是一个小功能点或者一个 bug fix,这样进行恢复等的操作时能够将「误伤」减到最低;
  2. 用一句简练的话写在第一行,然后空一行稍微详细阐述该提交所增加或修改的地方;
  3. 不要每提交一次就推送一次,多积攒几个提交后一次性推送,这样可以避免在进行一次提交后发现代码中还有小错误;

Commit Message 格式

建议参考规范: <type>(scope):<subject>

实例:fix(首页模块):修复弹窗 JS Bug。

type 表示 动作类型,可分为:

  • fix:修复 xxx Bug
  • feat:新增 xxx 功能
  • test:调试 xxx 功能
  • style:变更 xxx 代码格式或注释
  • docs:变更 xxx 文档
  • refactor:重构 xxx 功能或方法
  • scope 表示 影响范围,可分为:模块、类库、方法等。

subject 表示 简短描述,最好不要超过 50 个字,如果有相关 Bug 的的编号,建议在描述中加上。

3.版本管理

主版本号

使用 1 位数字,当功能模块有较大的变动或子版本号满,即可升级,每次升级主版本号加 1

子版本号

使用 2 位数字,从 0 开始。每个迭代周期为一个版本,版本号依次递增,最大的版本号为 99

维护版本号

使用 2 位数字,从 0 开始。系统上线后,发现缺陷或者有较少改动,则通过维护版本号发布

四、开发场景

接下来举几个开发场景。

开发流程:开发编码->测试发布->功能测试->测试环境功能验收->生产发布->生产环境功能验收

新需求加入


有一个订单管理的新需求需要开发,首先要创建一个 feature-order 分支,问题来了,该分支是基于哪个分支创建?

  • 如果 存在 未测试完毕的需求,就基于 master 创建。
  • 如果 不存在 未测试完毕的需求,就基于 develop 创建。

需求在 feature-order 分支开发完毕,准备提测时,要先确定 develop 不存在未测试完毕的需求,这时研发人员才能将代码合并到 develop,然后(可选合并到测试分支test-xxx)供测试人员测试。
测试人员在 测试环境 测试通过后,研发人员再将代码发布到 release (UAT)供测试和验收。
在 release (UAT)测试通过后,研发人员再将代码发布到 master (正式环境上线)供测试人员上线测试验证。 在 master (正式环境上线) 验证通过后,研发人员需要删除 feature-order 分支。

普通迭代

有一个订单管理的迭代需求,如果开发工时 < 1d,直接在 develop 开发,如果开发工时 > 1d,那就需要创建分支,在分支上开发。

开发后的提测上线流程 与 新需求加入的流程一致。时间供参考,动态调整

修复测试环境 Bug

在 develop 测试出现了Bug,如果修复工时 < 2h,直接在 develop 修复,如果修复工时 > 2h,需要在分支上修复。

修复后的提测上线流程 与 新需求加入的流程一致。时间供参考,动态调整

修改预上线环境 Bug

在 release 测试出现了Bug,首先要回归下 develop 分支是否同样存在这个问题。

如果存在,修复流程 与 修复测试环境 Bug流程一致。

如果不存在,这种可能性比较少,大部分是数据兼容问题,环境配置问题等。

修改正式环境 Bug

在 master 测试出现了Bug,首先要回归下 release 和 develop 分支是否同样存在这个问题。

如果存在,修复流程 与 修复测试环境 Bug流程一致。

如果不存在,这种可能性也比较少,大部分是数据兼容问题,环境配置问题等。

紧急修复正式环境 Bug

需求在测试环节未测试出 Bug,上线运行一段时候后出现了 Bug,需要紧急修复的。

紧急修复的意思是没时间验证测试环境了,但还是建议验证下预上线环境。

如果 release 分支存在未测试完毕的需求,就基于 master 创建 hotfix-xxx 分支,修复完毕后发布到 master 验证,验证完毕后,将 master 代码合并到 release 和 develop 分支,同时删掉 hotfix-xxx 分支。 如果 release 分支不存在未测试完毕的需求,但 develop 分支存在未测试完毕的需求,就基于 release 创建 hotfix-xxx 分支,修复完毕后发布到 release 验证,后面流程与上线流程一致,验证完毕后,将 master 代码合并到 develop 分支,同时删掉 hotfix-xxx 分支。 如果 release 和 develop 分支都不存在未测试完毕的需求, 就直接在 develop 分支上修复完毕后,发布到 release 验证,后面流程与上线流程一致。

并行提测

在一个项目中并行开发了两个需求,并行提测,但是上线日期不同。

两种方案:

  • 再部署一套可供测试人员测试的分支
  • 使用 git cherry-pick “挑拣”提交