本篇主要总结的是企业级开发模型以及利用Git模拟企业级别的项目管理方式
基础知识
前面已经进行了全部的关于Git的各项操作,那么Git是作用于企业项目管理的,因此了解企业是如何进行项目开发是必要的
软件是如何被做出来的?
软件从无到完备是一个很复杂的过程,一般来说大体可以分为开发人员,测试人员和运维人员,每个阶段需要进行的内容也很繁琐,大体可以用下面这个图总结出来
也就是说,一个项目想要正式落实下来需要多方面的共同落实,但在实际开发中,开发部门和运维会有比较大的利益冲突,为了避免这样的情况发生,就诞生了新的工具—DevOps
DevOps
是由Development
和Operations
组合起来形成的,主要是用来进行软件开发人员和运维人员之间的沟通合作的平台
系统开发环境的概念
那么作为开发人员来说,在实际的系统开发中有几个比较常用的环境:
- 开发环境:日常开发的时候使用的服务器,其中会包含错误报告和一些测试的工具
- 测试环境:测试环境主要是将开发环境的代码进行测试的一个阶段,测试后就可以放到生产环境中
- 预发布环境:在发布前,为了防止测试环境和线上环境的差异从而增加的一个环境,这个环境主要是用来检测一下到实际的开发环境中会不会出现其他问题,如果没有出现问题就可以提交到正式的生产环境中了
- 生产环境:正式对外提供服务的环境
因此,整个流程总结出来就是开发–测试–上线
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
平台,用户依旧采用的是Windows
和Linux
下模拟双用户的身份
经过各项初始化后,在Gitee
的平台上创建好了项目,并且使用的是Git Flow模型
那么下面就在Linux
和Windows
下模拟两个用户进行实验
首先是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
发布
这样就完成了一个项目大致的流程模拟