Git:利用Git模拟企业级项目管理

2023-09-21 15:45:00

本篇主要总结的是企业级开发模型以及利用Git模拟企业级别的项目管理方式

基础知识

前面已经进行了全部的关于Git的各项操作,那么Git是作用于企业项目管理的,因此了解企业是如何进行项目开发是必要的

软件是如何被做出来的?

软件从无到完备是一个很复杂的过程,一般来说大体可以分为开发人员,测试人员和运维人员,每个阶段需要进行的内容也很繁琐,大体可以用下面这个图总结出来

在这里插入图片描述
也就是说,一个项目想要正式落实下来需要多方面的共同落实,但在实际开发中,开发部门和运维会有比较大的利益冲突,为了避免这样的情况发生,就诞生了新的工具—DevOps

DevOps是由DevelopmentOperations组合起来形成的,主要是用来进行软件开发人员和运维人员之间的沟通合作的平台

系统开发环境的概念

那么作为开发人员来说,在实际的系统开发中有几个比较常用的环境:

  1. 开发环境:日常开发的时候使用的服务器,其中会包含错误报告和一些测试的工具
  2. 测试环境:测试环境主要是将开发环境的代码进行测试的一个阶段,测试后就可以放到生产环境中
  3. 预发布环境:在发布前,为了防止测试环境和线上环境的差异从而增加的一个环境,这个环境主要是用来检测一下到实际的开发环境中会不会出现其他问题,如果没有出现问题就可以提交到正式的生产环境中了
  4. 生产环境:正式对外提供服务的环境

因此,整个流程总结出来就是开发–测试–上线

在这里插入图片描述

Git分支设计规范

前面的几篇文章中对分支的作用和使用方法有了一个明确的理解,从中也可以知道,分支不管对于Git还是对于项目开发的效率来说都有非常重要的作用,那么如何用最安全最高效的方式进行项目的开发就成了一个问题,因此就引出了分支设计规范的问题

正常来说,项目主要有下面的一些分支

分支主分支适用环境
master主分支生产环境
release预发布分支预发布/测试环境
develop开发分支本地
feature需求开发分支本地
hotfix紧急修复分支本地

那么下面对上面的这几个分支进行总结

master分支

  • master分支是一个主分支,并且是只读且唯一的分支,是用来部署到正式的发布环境的,一般是由release分支合并得出来的
  • master分支是最终用来对外发布的,在master分支上的推送都应该打标签做记录,用以追溯

release分支

  • release分支是预发布分支,基于本次上线的所有的feature分支合并到develop分支后创建出来的,可以进行测试和预发布
  • 命名规则一般是release/version_publishtime
  • release分支主要用于提交给测试人员进行测试
  • 如果出现问题,应该回到develop分支查看问题情况
  • release分支属于临时分支

develop分支

  • develop分支是开发分支,基于master分支创建的只读且唯一的分支,始终保持最新完成以及bug修复后的代码,是可以部署到开发环境对应集群

feature分支

  • feature分支通常是为新功能或者新特性开发的分支,一般来说是以develop分支为基础创建feature分支
  • 命名规则:feature/user_createtime_feature
  • 新特性或功能开发完成后,开发人员要合并到develop分支

hotfix分支

  • hotfix主要是线上bug进行修复的分支,也叫补丁分支,是对线上版本进行紧急修复
  • 命名规则:hotfix/user_createtime_hotfix
  • 当问题解决后,需要合并到master分支和develop分支

这样的开发分支有一个名字:Git Flow模型,用下面的图来解释整个流程

在这里插入图片描述

模拟进行企业级项目管理

本次使用的是Gitee上的DevOps平台,用户依旧采用的是WindowsLinux下模拟双用户的身份

经过各项初始化后,在Gitee的平台上创建好了项目,并且使用的是Git Flow模型

在这里插入图片描述
那么下面就在LinuxWindows下模拟两个用户进行实验

首先是Linux下:

# clone仓库到本地
[test@VM-16-11-centos ~]$ git clone https://gitee.com/testfor-git/gitcode.git
Cloning into 'gitcode'...
Username for 'https://gitee.com': 13934573466
Password for 'https://13934573466@gitee.com': 
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 15 (delta 3), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (15/15), done.

# 创建分支关联
[test@VM-16-11-centos gitcode]$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/feature/linux_20230917_pay
  remotes/origin/feature/windows_20230917_collection
  remotes/origin/hotfix
  remotes/origin/master
[test@VM-16-11-centos gitcode]$ git checkout -b dev origin/feature/linux_20230917_pay
Branch dev set up to track remote branch feature/linux_20230917_pay from origin.
Switched to a new branch 'dev'
[test@VM-16-11-centos gitcode]$ git branch -vv
* dev    6397e97 [origin/feature/linux_20230917_pay] change readme
  master 74aa30d [origin/master] Remove pay.cpp
[test@VM-16-11-centos gitcode]$ vim pay.cpp
[test@VM-16-11-centos gitcode]$ git add .
[test@VM-16-11-centos gitcode]$ git commit -m "update for pay"

# 提交代码
[test@VM-16-11-centos gitcode]$ git push origin dev:feature/linux_20230917_pay
Username for 'https://gitee.com': 13934573466
Password for 'https://13934573466@gitee.com': 
Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 629 bytes | 0 bytes/s, done.
Total 6 (delta 2), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/testfor-git/gitcode.git
   6397e97..13d0b69  dev -> feature/linux_20230917_pay

在这里插入图片描述
此时在Linux分支下就有了提交的记录


下面进行Windows分支下的开发

# 上传代码
PS D:\桌面\gitcode> git add .
PS D:\桌面\gitcode> git commit -m "md collect"
[dev 679037b] md collect
 1 file changed, 6 insertions(+)
 create mode 100644 collect.cpp
PS D:\桌面\gitcode> git branch -a
* dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/feature/linux_20230917_pay
  remotes/origin/feature/windows_20230917_collection
  remotes/origin/hotfix
  remotes/origin/master
PS D:\桌面\gitcode> git push origin dev:feature/windows_20230917_collection
info: detecting host provider for 'https://gitee.com/'...
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcmcore-tlsverify for more information.
info: detecting host provider for 'https://gitee.com/'...
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcmcore-tlsverify for more information.
git: 'credential-manager' is not a git command. See 'git --help'.

The most similar command is
        credential-manager-core
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 322 bytes | 322.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/testfor-git/gitcode.git
   b39ec6a..679037b  dev -> feature/windows_20230917_collection

在这里插入图片描述
此时在Windows分支下也有了对应的代码

再合并到develop分支,方便进行测试和调试

在这里插入图片描述
合并后即可删除分支

在这里插入图片描述
对于Linux下的分支也是一样的操作,这里不进行过多演示,这样结束后都合并到了develop分支下,并且没用的分支也被删除了

在这里插入图片描述
对于没有问题的develop版本就可以合并到release版本,再进行master发布

这样就完成了一个项目大致的流程模拟

更多推荐

UOS QTextEdit设置换行和滚动条(bug自动换行时右侧个别字符被遮盖)

一、环境UOS_x86/QT5/C++二、qtextEdit换行设置下图在ui界面lineWrapMode这个参数可以设置换行相关:NoWrap是不换行、WidgetWidth是自动换行(按textEdit的宽度换行)、下面两个是可以自定义每行的宽度,如果选了这两个,就可通过下面LineWrapColumnOrWidt

运维面试宝典

【Linux基础篇】1.描述Linux运行级别0-6的各自含义0:关机模式1:单用户模式<==破解root密码2:无网络支持的多用户模式3:有网络支持的多用户模式(文本模式,工作中最常用的模式)4:保留,未使用5:有网络支持的X‐windows支持多用户模式(桌面)6:重新引导系统,即重启2.描述Linux系统从开机到

【无标题】

一、Vue脚手架搭建(一)安装与配置1.npmconfigsetregistryhttp://registry.npm.taobao.org/npminstall-g@vue/clivue--version//进入目录小白做毕设2024vuecreatevue2.输入cdvuenpmrunserve3.成功(二)结构解

代码变更风险可视化系统建设与实践

总第575篇2023年第027篇本文整理自美团技术沙龙第77期《美团亿级流量系统的质量风险防控和稳定性治理实践》。文章第一部分介绍了软件系统风险与变更;第二部分介绍了代码变更风险可视化系统的能力建设;第三部分介绍了整个系统在美团内部实践落地的情况;最后是对未来的规划和展望。希望对大家能有所帮助或启发。1软件系统风险与变

SMTP是什么?谈谈SMTP的含义

SMTP,即SimpleMailTransferProtocol,也称为简单邮件传输协议,是一种用于电子邮件传输的协议。它能够将邮件从发送者的电子邮件客户端传输到接收者的电子邮件服务器,并通过其他协议将邮件传递给接收者的电子邮件客户端。SMTP协议的作用是让邮件能够成功投递并发送到指定的收件人邮箱。蜂邮给大家说说:SM

【产品运营】如何提升B端产品的竞争力(上)

B端产品的核心竞争力不是只有产品功能丰富度、易用度这些维度,判断产品核心竞争力应该基于产品所定位解决的问题场景。B端产品的成交因素很多,包括产品本身、公司品牌、客情关系、成功案例、产品定价、客户成熟度、需求匹配度等,本文只谈产品本身。一、产品竞争力类型B端产品本身的核心竞争力不仅只有产品功能丰富度、易用度这些维度,判断

如何下载安装 WampServer 并结合 cpolar 内网穿透,轻松实现对本地服务的公网访问

文章目录前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1注册账号3.2下载cpolar客户端3.3登录cpolarwebui管理界面3.4创建公网地址4.固定公网地址访问前言Wamp是一个Windows系统下的Apache+PHP+Mysql集成安装环境,是一组常用来搭

【操作系统笔记】并发安全问题

用户态抢占和内核态抢占内核中可以执行以下几种程序:①当前运行的进程:陷阱程序(系统调用)和故障程序(pagefault),进程运行在内核态的时候,其实就是在执行进程在用户态触发的异常对应的异常处理程序②中断处理程序③内核线程用户态线程抢占的调度时机检查当前线程是否需要被抢占的时机点(检查点):时钟中断发生,在时钟中断处

Mybatis的mapper接口实现原理

目录1概述2动态代理和反射对象3源码分析4总结1概述为啥mybatis的mapper只有接口没有实现类,但它却能工作?说起mybatis,大伙应该都用过,有些人甚至底层源码都看过了。在mybatis中,mapper接口是没有实现类的,取而代之的是一个xml文件。也就是说我们调用mapper接口,其实是使用了mapper

代理IP和Socks5代理:跨界电商与爬虫的智能引擎

跨界电商,作为全球市场的一部分,对数据的需求越来越大。同时,随着互联网的发展,爬虫技术也在不断演进,成为了跨界电商的关键工具之一。然而,随之而来的是网站的反爬虫机制和网络安全风险。在这种情况下,代理IP和Socks5代理应运而生,为企业提供了数据采集的解决方案和网络安全的保护。本文将深入研究代理IP和Socks5代理在

视频去LOGO的方法,AI自动完美地去除视频LOGO

喜欢做影视剧剪辑的朋友,可能会遇到下载的影视剧本身存在字幕、台标的情况,这些和新的剪辑主题不相符的原片元素,都会影响我们最终的成片效果。不过也无需烦恼哦,我们可以利用AI视频处理工具,自动去除视频中的logo或其它物体。只要利用好工具,想要去除视频中的logo是一件很简单的事情,AI抠图工具,只需导入需要处理的视频文件

热文推荐