我与Git的那些破事(上)--代码管理
1. Git是什么?
作为一名程序猿,我相信大家都或多或少接触过git--分布式版本控制软件。
有人说,它是目前世界上最先进的分布式版本控制系统,我想说,是否最先进不知道,但确实好用,实用。
作为一款风靡全球的软件,不得不提提它的历史:
--由Linus Torvalds创作,并与2005首次发布,最初仅是为更好的管理Linux核心开发而设计,不曾想太优秀,如今已被广为使用。
2. 我们可用Git来干什么?
作为一款分布式版本控制软件,听上去高端大气上档次,但说白了,就是一款项目代码管理工具。
3. 如何正确使用Git?
既然Git如此好用,理所当然,目前全球各大公司大多采用该软件作为项目代码的管理工具。
犹记得当初刚从学校进入企业,发现原来公司的代码是这样管理的,看上去猴塞雷的样子。当然,伴随着操作小心翼翼,生怕一顿操作猛如虎,犯错回家卖红薯。。
作为一个接触多年的老手,则肆无忌惮,斧削刀砍,好不快活。讲真,那会羡慕的不要不要~~
其实,只要懂得正确操作流程,你也可以大刀阔斧,那么下面的知识,你值得拥有!!
4. 项目管理
好了,闲话就此打住,还是得来点干货。
我相信大家一定听过一句话:作为一款稳定的产品,我们一定要保证项目运行的四个九。咋听之下,一脸狐疑。其实,意为保证项目运行99.99%(至于那遁去的1,你懂的),即高可用的又一说法。
为保证项目高可用,产品上线必须严格遵守一定的流程。
这里提几个概念,可能与你所在公司说法不太一样,但我相信都是换汤不换药,领略精髓即可,大可不必咬文嚼字。
Git 分支:
- master--该分支一般作为备份使用,通常为最稳定代码。
- dev--该分支作为开发分支,持续开发,持续集成。
- feature--该分支作为需求开发分支,生命周期由需求创建到完成。
- release--该分支作为版本发布分支。
- hotfix--该分支作为bug修复分支,发布版本存在重要缺陷时,拉出该分支,并由该分支发布hotfix版本。
部署环境:
- DEV/Local环境--本地环境。一般而言,程序猿接到一个新的需求时,会在本地开发,完成后自己测试,这里称为本地环境(当然财大气粗的公司可能会专门准备一套DEV环境用于测试)。
- QA环境--与产线环境配置一致(单实例)。需求本地测试通过后,部署到QA环境中,由QA进行测试。由于QA环境部署频繁,如果多实例部署会造成资源和时间上的浪费。
- BTS环境--与产线环境完全一致(分布式)。在版本发布前,部署到BTS环境,该环境和产线环境完全一致。一般会在版本发布前3天部署到该环境,做UAT(用户接受测试)。
- PROD环境--分布式系统。产线环境。
4.1 新需求:
开发流程:

- 当团队接到新的需求时,一般会安排某个或某几个程序猿来开发该功能。在了解完需求和设计后,开发会拉出对应的feature分支,所有该需求的代码都将在该分支上进行开发。
- 当开发完成,为验证功能可行性,程序猿需要在本地进行对应测试,通过后将代码合入到dev分支。
- 利用Jenkins从dev分支中进行打包,然后部署到QA环境中,由团队中专职QA进行功能测试。测试不通过,上述步骤重复。测试通过,该需求结束。
这里,有些小伙伴则会问,为什么本地测试通过了,而在QA环境中却不通过呢?
通常,一个团队都会同时接多个需求,大家的代码都会并行往dev中合入,这时就有可能影响到其他的需求,或者被其他需求影响,导致bug。
Git详细流程:

4.2 发布新版本
开发流程:

- 当发布新版本时,以时间或需求结束点为节点,打对应tag(方便以后回溯)。从该tag拉出release分支,Jenkins从release分支打包。
- 将包部署到QA环境,由专职QA进行测试。
- 如果测试不通过,从release分支中拉出hotfix分支,在hotfix分支上进行bug修复,本地测试完毕,Jenkins从hotfix分支打包,部署到QA环境测试。
- 测试通过,下一步。
- 将包部署到BTS环境,由专职QA进行测试。测试不通过,判断当前分支,若为release分支,则从该分支拉出hotfix分支,在hotfix修复bug后;若为hotfix分支,则直接修改bug,本地测试完毕,Jenkins打包hotfix分支,部署到QA测试。
- 将包部署到PROD环境,由专职QA进行测试,测试不通过, 判断当前分支,若为release分支,则从该分支拉出hotfix分支,在hotfix修复bug后;若为hotfix分支,则直接修改bug,本地测试完毕,Jenkins打包hotfix分支,部署到QA测试。
Git详细流程:

上述的内容,仅为个人多年开发经验总结,或许与标准流程有一定的出入。
如有错误之处,忘各位大佬不吝斧正。
作者:吴家二少
博客地址:https://www.cnblogs.com/wu-kai/
本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
我与Git的那些破事(上)--代码管理的更多相关文章
- 我与Git的那些破事--代码管理实践
1. Git是什么? 作为一名程序猿,我相信大家都或多或少接触过git--分布式版本控制软件. 有人说,它是目前世界上最先进的分布式版本控制系统,我想说,是否最先进不知道,但确实好用,实用. 作为一款 ...
- 我与Git的那些破事系列(下)--分支模型
在上篇文章中,我提到了Git的基本概念和一些本人实际项目中的总结.然而,最近读了一片Vincent Driessen写的一篇文章,觉得他总结的太好了,忍不住站在他的肩膀上写一篇自己的理解.文章的连接放 ...
- 我与Git的那些破事(下)--分支模型
在上篇文章中,我提到了Git的基本概念和一些本人实际项目中的总结.然而,最近读了Vincent Driessen写的一篇文章,觉得他总结的太好了,站在他肩膀上忍不住将自己的理解分享出来.Vincent ...
- 记录一次使用git工具拉取coding上代码密码账号错误的经历
1.忘记密码 1.另外的一个位置
- git创建远程项目并进行代码管理及相关命令
1.windows下载Git https://git-scm.com/downloads 然后一路点击安装 2.登录github,点击右上角创建仓库 3.在本地项目根目录下 输入如下命令 ss ...
- window7下搭建本机版git并在本机上进行代码管理
1.安装软件:Git-1.9.2-preview20140411.exe与TortoiseGit-1.8.8.0-64bit.msi 2.在本机任一目录下执行如下操作: 3.创建一个test.java ...
- 代码管理必备-----git使用上传码云
作为一个程序员,你要学会代码的管理,这是一个最基本的修养,就像是一个剑客的剑谱,代码管理,目前流行的是svn和git,但是很不好的是git如果没有插件的话,很多人都不会用git bash 来实现自己的 ...
- Git之创建仓库并上传/更新项目版本
1.Git配置 使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名,每次提交记录里都会包含这些信息.使用git config命令进行配置: $ git config ...
- Git学习系列之Windows上安装Git之后的一些配置(图文详解)
不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...
随机推荐
- 记录一次gitlab版本回退以及代码冲突解决流程
版本回退 git clone -b 分支名 项目地址 克隆需要回退的分支代码 git pull 保证代码提交记录最新 git log --pretty=oneline 以行的形式展示提交记 ...
- 上天的源码要不要——GitHub 热点速览 v.21.08
作者:HelloGitHub-小鱼干 前几天,"机智号" 所用的飞行软件框架 F´ 被 NASA 开源了,想看 F´ 这个嵌入式的代码不妨考虑下 Sourcetrail 这个神器, ...
- HTTP/1.1 有点慢,我想优化下!
问你一句:「你知道 HTTP/1.1 该如何优化吗?」 我想你第一时间想到的是,使用 KeepAlive 将 HTTP/1.1 从短连接改成长链接. 这个确实是一个优化的手段,它是从底层的传输层这一方 ...
- 微信小程序:优化接口代码-提取公共接口路径
方法一.将公共部分提取出来定义为baseURL变量 简化url,把里面公共部分提取出来.如https://api-hmugo-web.itheima.net/api/public/v1/categor ...
- Redis数据结构和对象三
1.Redis 对象系统 Redis用到的所有主要数据结构,简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合.跳跃表. Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些 ...
- 5G时代,为什么NoSQL和SQL存在短板?
01 介绍 当今的通信服务提供商(CSP)需要能够在处理海量复杂的数据的同时,不会下降或者减慢网路响应速度和可靠性.5G时代,设备和用户数量呈指数级增长,这对业务支持服务(BSS)提出了新需求,也成为 ...
- 02----python入门----基本数据类型
关于数据分类依据 一.数字型(int) Python可以处理任意大小的正负整数,但是实际中跟我们计算机的内存有关,在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,在64位系 ...
- 2020年12月-第02阶段-前端基础-CSS Day07
CSS Day07 CSS高级技巧 理解 能说出元素显示隐藏最常见的写法 能说出精灵图产生的目的 能说出去除图片底侧空白缝隙的方法 应用 能写出最常见的鼠标样式 能使用精灵图技术 能用滑动门做导航栏案 ...
- 顺序表及基本操作(C语言)
#include <stdio.h> #include <stdlib.h> //基本操作函数用到的状态码 #define TRUE 1; #define FALSE 0; # ...
- 如何使用python把json文件转换为csv文件
@ 目录 了解json整体格式 转换格式 提取key和value 使用pandas写入csv 了解json整体格式 这里有一段json格式的文件,存着全球陆地和海洋的每年异常气温(这里只选了一部分): ...