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的那些破事(上)--代码管理的更多相关文章

  1. 我与Git的那些破事--代码管理实践

    1. Git是什么? 作为一名程序猿,我相信大家都或多或少接触过git--分布式版本控制软件. 有人说,它是目前世界上最先进的分布式版本控制系统,我想说,是否最先进不知道,但确实好用,实用. 作为一款 ...

  2. 我与Git的那些破事系列(下)--分支模型

    在上篇文章中,我提到了Git的基本概念和一些本人实际项目中的总结.然而,最近读了一片Vincent Driessen写的一篇文章,觉得他总结的太好了,忍不住站在他的肩膀上写一篇自己的理解.文章的连接放 ...

  3. 我与Git的那些破事(下)--分支模型

    在上篇文章中,我提到了Git的基本概念和一些本人实际项目中的总结.然而,最近读了Vincent Driessen写的一篇文章,觉得他总结的太好了,站在他肩膀上忍不住将自己的理解分享出来.Vincent ...

  4. 记录一次使用git工具拉取coding上代码密码账号错误的经历

    1.忘记密码 1.另外的一个位置

  5. git创建远程项目并进行代码管理及相关命令

    1.windows下载Git     https://git-scm.com/downloads 然后一路点击安装 2.登录github,点击右上角创建仓库 3.在本地项目根目录下 输入如下命令 ss ...

  6. window7下搭建本机版git并在本机上进行代码管理

    1.安装软件:Git-1.9.2-preview20140411.exe与TortoiseGit-1.8.8.0-64bit.msi 2.在本机任一目录下执行如下操作: 3.创建一个test.java ...

  7. 代码管理必备-----git使用上传码云

    作为一个程序员,你要学会代码的管理,这是一个最基本的修养,就像是一个剑客的剑谱,代码管理,目前流行的是svn和git,但是很不好的是git如果没有插件的话,很多人都不会用git bash 来实现自己的 ...

  8. Git之创建仓库并上传/更新项目版本

    1.Git配置 使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名,每次提交记录里都会包含这些信息.使用git config命令进行配置: $ git config ...

  9. Git学习系列之Windows上安装Git之后的一些配置(图文详解)

    不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...

随机推荐

  1. [Python学习笔记]文件的读取写入

    文件与文件路径 路径合成 os.path.join() 在Windows上,路径中以倒斜杠作为文件夹之间的分隔符,Linux或OS X中则是正斜杠.如果想要程序正确运行于所有操作系统上,就必须要处理这 ...

  2. MySQL 常用命令手册 增删改查大法

    一.数据库操作 创建数据库 语法: CREATE DATABASE database_name; 删除数据库 删除数据库务必谨慎!因为执行删除命令后,所有数据将消失. 语法: DROP DATABAS ...

  3. Maven 打包项目到私服 (deploy)

    一.配置maven 在maven安装目录 /conf/setting.xml 中的servers下添加: 1 <servers> 2 <server> 3 <id> ...

  4. Lambda 表达式简介

    0.预备知识 函数式接口:只包含一个抽象方法的接口. 内部类:静态.成员内部类 局部内部类 匿名内部类 1.代码 1 /** 2 * 函数式编程: 3 * lambda表达式前提: 4 * 必须是函数 ...

  5. SpringBoot(五):SpringBoot使用拦截器

    1.按照SpringMVC的方式编写一个拦截器: 2.配置一个类   implements WebMvcConfigurer 接口 为该类添加注解@Configuration  (等价于一个sprin ...

  6. ClickHouse源码笔记4:FilterBlockInputStream, 探寻where,having的实现

    书接上文,本篇继续分享ClickHouse源码中一个重要的流,FilterBlockInputStream的实现,重点在于分析Clickhouse是如何在执行引擎实现向量化的Filter操作符,而利用 ...

  7. PyQt5之 QTableView 添加复选框(自定义委托)

    import sys from untitled import Ui_Form from PyQt5.QtWidgets import QApplication, QWidget, QStyleOpt ...

  8. PHP代码审计_用==与===的区别

    目录 背景介绍 如何审计 绕过案例1 绕过案例2 背景介绍 比较==与===的差别 == 是等于符号,=== 是恒等于符号,两个符号的功能都是用来比较两个变量是否相等的,只不过两个符号的比较维度不一样 ...

  9. freebsd升级时出错,没有ntp用户解决

    freebsd升级出错,没有ntp用户 终端执行命令 pw groupadd ntpd -g 123 pw useradd ntpd -u 123 -g ntpd -h - -d /var/db/nt ...

  10. 基于renren-fast的快速入门项目实战(实现报表增删改查)

    基于renren-fast的快速入门项目实战(实现报表增删改查) 说明:renren-fast是一个开源的基于springboot的前后端分离手脚架,当前版本是3.0 官方开发文档需付费,对于新手而言 ...