代码分支管理

简介: 大家好,我是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

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

特点:

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

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


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


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

相关文章
|
2天前
|
开发工具 git
Git版本控制——分支
几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着可以把工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
33 0
|
2天前
|
数据可视化 持续交付 开发工具
实际项目中如何使用Git做分支管理
实际项目中如何使用Git做分支管理
|
2天前
|
开发工具 git
Git分支及使用原则与流程
Git分支及使用原则与流程
75 0
|
9月前
|
Java 开发工具 Maven
Git分支与提交代码规范
Git分支与提交代码规范
|
11月前
|
开发工具 git
【遇坑记实 一】团队开发中不要随意git merge别的分支
【遇坑记实 一】团队开发中不要随意git merge别的分支
227 0
|
11月前
|
开发工具 git
【Git】一文带你入门Git分布式版本控制系统(分支管理策略、Bug分支)
【Git】一文带你入门Git分布式版本控制系统(分支管理策略、Bug分支)
262 0
|
11月前
|
测试技术 开发工具 git
👫有效的Git团队协作实践,拒当“分支恐怖分子”
2023年啦,还有人在团队合作中的充当“分支恐怖分子“,让我来向你介绍在团队 👫 中应用最为广泛的 `Git` 最佳实践吧!
83 0
|
程序员 开发工具 git
三行代码让你的git记录保持整洁
笔者最近在主导一个项目的架构迁移工作,由于迁移项目的历史包袱较重,人员合作较多,在迁移过程中免不了进行多分支、多次commit的情况,时间一长,git的提交记录便混乱不堪,随便截一个图形化的git提交历史给大家感受一下。
112 0
|
运维 前端开发 jenkins
企业中多分支多人协作的git工作流程
企业中多分支多人协作的git工作流程
372 0
企业中多分支多人协作的git工作流程
|
jenkins 持续交付 开发工具
Git分支管理规范构思
最近对于公司项目源码分支管理有一些规范构思,对于同一个项目而言,`不同环境`的源码管理、`自动化部署`方式、以及`接口数据隔离`等我们是否可以满足现状?
Git分支管理规范构思

相关实验场景

更多