代码分支管理

简介: 大家好,我是rainbowzhou。今天和大家重温一下代码分支策略有关的知识。

大家好,我是rainbowzhou。


大家或许遇到过以下情况:

- 已修复过的bug,某次更新后又复现;

- 某些问题仅在UAT环境上出现,测试环境却没有;

- 同一个项目的不同版本,代码相互覆盖,导致测试进度受阻...

上述情况最有可能的原因就是代码分支管理混乱所致。那么今天就和大家重温一下,**代码分支策略**有关的知识。


## 版本控制系统

提到版本控制系统,大家脑海里肯定会想到SVN或Git。那么大家再想想它们属于哪一种版本控制系统呢?其实根据版本控制系统的运作方式,目前主流版本管理系统被划分为集中式版本控制系统和分布式版本控制系统两种类型。


### 集中式版本控制系统

Subversion 简称SVN,是集中式版本控制系统的典型代表。版本控制系统的出现,解决了多人如何进行协同修改代码的问题。这类版本控制系统,都有一个单一的集中管理的版本控制管理服务器,保存所有文件的历史修订版本纪录。团队成员之间的代码交换必须通过客户端连接到这台服务器,获取自己想要的问天。每个人如果想要获取其他人最新提交的修订纪录,就必须从集中式版本控制系统中获得。


集中式版本控制系统有两点劣势:

1. 网络不佳的情况下,同步大量文件时会经常失败;

2. 集中式版本控制系统有单点故障的风险。


### 分布式版本控制系统

Git是目前主流的分布式版本控制系统。起源于Linus Torvalds 为了帮助管理Linux内核开发而开发的一个开源的版本控制软件。它与集中式版本控制系统的区别在于多个服务器共存,每个人的节点都是一个代码仓库,所有的节点都是平等的。在团队协作过程中,通常会指定某个节点作为团队的中央服务器。


分布式版本控制系统的优势:

1. 分布式版本控制系统提交操作都是在本地进行而无须经过服务器,因此提交速度更快。仅当需要向其他人或远程服务器做文件提交或同步时,才通过网络将其推送到远程仓库或从远程仓库拉取。

2. 分布式版本控制系统避免了单点故障的风险。


## 常见分支开发模式

按照新功能开发以及版本发布所用的分支进行分类,可将基于版本控制系统的开发模型分为3类:

1. 主干开发,主干发布;

1. 主干开发,分支发布;

1. 分支开发,主干发布。


### 主干开发,主干发布

025-主干开发主干发布.png

含义:主干开发,主干发布就是工程师向主干上提交代码,并用主干代码进行软件交付。

特点:

- 优势:分支方式简单,管理工作量较少;

- 不足:会有等待时间,存在一定的资源浪费;若高频交付,可能存在未完成功能的代码。



### 主干开发,分支发布

025-主干开发分支发布.jpeg

含义:开发人员将写好的代码提交到主干,当新版本功能全部开发完的时候,从主干上拉出一个新的分支,并在这个新分支上进行集成测试,修复bug,进行质量打磨。当质量达标后,就对外发布版本。

特点:

- 优势:与将要发布的新功能无关的人员可以持续工作在开发主干上,不受版本发布的影响。新发布的版本出现缺陷后,可以直接在其自己的版本发布分支上进行修复。即使主干代码发生了变化,该分支也不会受到影响。

- 不足:主干代码通常只能针对下一个新发布版本的功能开发;若发布分支的数量不加约束,并且分支周期较长,可能出现分支地狱倾向。


### 分支开发,主干发布

025-分支开发主干发布.jpeg

含义:主干上拉出分支,并在分支上开发软件新功能或修复缺陷,当某个分支上的功能开发完成后对外发布版本时,才合入主干,在主干上进行缺陷修复,质量达标后,再将主干代码打包并发布。

特点:

- 优势:分支合并钱,每个分支间的开发活动互不影响;团队可以自由选择发布某个分支的特性;若新版本出现缺陷,可以直接在主干上进行修复,无须考虑其他分支

- 不足:推迟发现代码冲突的时间,不利于及时进行代码的重构.


以上,有任何想法都欢迎大家后台私信我,一起探讨交流。


如果文章对你有帮助,记得**在看、点赞、转发、加关注**哦!

相关文章
|
网络协议 网络架构
【计算机网络】OSI、TCP/IP、五层模型
【计算机网络】OSI、TCP/IP、五层模型
|
4月前
|
敏捷开发 数据可视化 开发工具
如何使用分支管理代码更改?
如何使用分支管理代码更改?
413 57
|
11月前
|
测试技术 开发工具 git
掌握Git分支管理,提升团队协作效率
掌握Git分支管理,提升团队协作效率
180 0
|
11月前
|
开发工具 git
git分支管理master/hotfix/develop/feature/release
采用合理的Git分支管理模型可以显著提升团队协作效率和代码管理的质量。本文介绍的 `master`、`develop`、`feature`、`release`和 `hotfix`分支模型是一个行之有效的方法,适用于大多数软件开发项目。通过清晰地划分各个分支的职责,团队成员可以更专注于各自的开发任务,同时确保代码库的稳定性和可维护性。
948 2
|
11月前
|
存储 关系型数据库 分布式数据库
PolarDB的PolarStore存储引擎以其高效的索引结构、优化的数据压缩算法、出色的事务处理能力著称
PolarDB的PolarStore存储引擎以其高效的索引结构、优化的数据压缩算法、出色的事务处理能力著称。本文深入解析PolarStore的内部机制及优化策略,包括合理调整索引、优化数据分布、控制事务规模等,旨在最大化其性能优势,提升数据存储与访问效率。
209 5
|
12月前
|
存储 数据库连接 API
构建RESTful API:使用FastAPI实现高效的增删改查操作
构建RESTful API:使用FastAPI实现高效的增删改查操作
439 0
|
12月前
|
开发工具 git
【Git快速入门】Git代码管理手册与协同开发之分支管理与协作(五)
【Git快速入门】Git代码管理手册与协同开发之分支管理与协作(五)
120 0
|
安全 Java Maven
使用MapStruct简化Java对象映射
在软件开发中,经常需要将一个Java对象的数据映射到另一个对象,特别是在使用DTO(Data Transfer Object)模式时。手动编写这些映射代码非常繁琐,而MapStruct可以帮助我们自动生成这些映射代码,从而提高开发效率和代码质量。
415 2
|
开发者
Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)
Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)
192 0
|
NoSQL 安全 Redis
阿里云redis安装
阿里云redis安装
354 0
下一篇
oss教程