图解Git——分支开发工作流《Pro Git》

分支开发工作流

由于分支管理的便捷, 才衍生出这些典型的工作模式,你可以根据项目实际情况选择。

1. 长期分支

  • 适用于持续开发和发布周期长的项目。常见的长期分支包括:
    1. master:只保留稳定的代码,通常用于生产环境。
    2. developnext:用于开发中的功能,可能不稳定,但在达到一定稳定性后可以合并到 master 分支中。
  • 在此模式下,开发者可以创建不同的分支来处理新功能或修复问题,并定期将这些分支合并到 developmaster 分支中,保持项目进度和稳定性。

1.1. 趋于稳定分支的线型图:

  • 通常把他们想象成流水线(work silos)可能更好理解一点,那些经过测试考验的提交会被遴选到更加稳定的流水线上去。

1.2. 趋于稳定分支的流水线(“silo”)视图

  • 可以用这种方法维护不同层次的稳定性。 一些大型项目还有一个 proposed(建议) 或 pu: proposed updates(建议更新)分支,它可能因包含一些不成熟的内容而不能进入 next 或者 master 分支。 这么做的目的是使你的分支具有不同级别的稳定性;当它们具有一定程度的稳定性后,再把它们合并入具有更高级别稳定性的分支中。 再次强调一下,使用多个长期分支的方法并非必要,但是这么做通常很有帮助,尤其是当你在一个非常庞大或者复杂的项目中工作时。

2. 主题分支

  1. 一种短期分支,通常用于开发单个功能或处理特定问题。这种模式下,开发者可以创建多个独立的分支来处理不同任务,每个分支专注于一个独立的特性或改动,开发完成后再合并回主分支。主题分支允许快速的上下文切换,使得不同功能或问题的开发不会互相干扰,且合并时不影响主分支。
  2. 示例:
    1. 合并了 dumbideaiss91v2 分支之后的提交历史

3. ⭐总结

3.1. 概念/定义

分支开发工作流是利用 Git 的强大分支功能,灵活管理项目开发的方式。通过短期和长期分支的结合,可以更好地组织代码,确保代码稳定性并支持团队协作。


3.2. 基本操作

3.2.1. 长期分支
  • 定义:用于维护不同稳定性级别的代码,例如:
    • master 分支:仅包含完全稳定或已发布的代码。
    • developnext 分支:包含正在开发或测试中的代码。
    • 其他如 proposed 分支:用于存储不成熟或待验证的更新。
  • 特点:定期将主题分支合并到更高稳定性的分支中。
3.2.2. 主题分支
  • 定义:短期分支,用于开发单一特性或解决单个问题。
  • 特点
    • 灵活性:可以随时创建、合并、删除主题分支。
    • 上下文独立:每个主题分支专注于特定目标,方便审查和管理。
    • 保留时间:改动可以在主题分支中保留任意时长,待成熟后再合并。
3.2.3. 操作示例
  • 创建分支开发方案:
    • master 创建 iss91 分支,工作到 C4。
    • 创建 iss91v2 进行第二种方案的尝试。
    • 临时创建 dumbidea 分支测试新的想法。
  • 合并分支后历史示例:最终合并 iss91v2dumbidea,抛弃 iss91 分支。

3.3. 优点/好处

  • 并行开发:支持多个任务同时进行,互不干扰。
  • 代码稳定性:通过分支间的逐步合并,确保主分支稳定。
  • 便于审查:分支聚焦特定任务,改动清晰易懂。
  • 灵活调整:随时切换分支或丢弃不合适的方案,最大限度保留有效成果。

3.4. 风险/注意事项

  • 本地分支操作:未推送的分支操作仅在本地生效,需同步到远程仓库以便团队协作。
  • 分支过多:分支数量庞大时需定期清理,避免代码库冗杂。
  • 合并冲突:频繁操作可能导致冲突,需及时解决。

3.5. 使用建议

  • 长期分支策略:为不同稳定性级别的代码维护明确的长期分支(如 masterdevelop)。
  • 小步快跑:尽量使主题分支短小精悍,单一任务完成后及时合并或删除。
  • 团队协作:推送主题分支到远程仓库,让团队成员了解进度或进行协作。

3.6. 配置建议(如适用)

  • 分支保护:保护 master 或关键分支,避免直接提交,强制通过 Pull Request 合并。
  • 分支命名规范:遵循如 feature/xxxhotfix/xxx 的分支命名规范,便于团队理解和管理。
  • 分支清理工具:定期使用工具或命令(如 git branch -dgit branch -r)清理无用分支。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/1625.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS界面传值-OC

1、页面跳转 由 ViewController 页面跳转至 NextViewController 页面 &#xff08;1&#xff09;ViewController ViewController.h #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend ViewController.m #import "ViewController.h" …

【Spring Boot 应用开发】-04-01 自动配置-数据源-连接池

资源关闭 还记得上一节中的这段代码么&#xff1f; try {if (resultSet ! null) resultSet.close();if (preparedStatement ! null) preparedStatement.close();if (connection ! null) connection.close(); } catch (SQLException e) {e.printStackTrace(); }这是我们在查询…

BUUCTF:misc刷题记录4(会持续更新的)

目录 爱因斯坦 ningen 做题总结&#xff1a; 爱因斯坦 下载解压后&#xff0c;得到一张图片。 老套路&#xff0c;还是先查看一下图片基本属性。只看到这串信息&#xff0c;不知道有啥用。 然后用010进行查看 发现图片里面隐藏了一个压缩包&#xff0c;压缩包里面有个flag.t…

Open FPV VTX开源之嵌入式OSD配置

Open FPV VTX开源之嵌入式OSD配置 1. 源由2. 安装3. 配置步骤一&#xff1a;备份/etc/telemetry.conf步骤二&#xff1a;修改/etc/telemetry.conf步骤三&#xff1a;配置时区步骤四&#xff1a;重启摄像头 4. 实测5. 参考资料 1. 源由 穿越机模拟图传延迟通常在10ms左右。 最…

JavaScript动态渲染页面爬取之Splash

Splash是一个 JavaScript渲染服务,是一个含有 HTTP API的轻量级浏览器,它还对接了 Python 中的 Twisted 库和 OT库。利用它&#xff0c;同样可以爬取动态渲染的页面。 功能介绍 利用 Splash&#xff0c;可以实现如下功能&#xff1a; 异步处理多个网页的渲染过程:获取渲染后…

HTTP详解——HTTP基础

HTTP 基本概念 HTTP 是超文本传输协议 (HyperText Transfer Protocol) 超文本传输协议(HyperText Transfer Protocol) HTTP 是一个在计算机世界里专门在 两点 之间 传输 文字、图片、音视频等 超文本 数据的 约定和规范 1. 协议 约定和规范 2. 传输 两点之间传输&#xf…

云服务信息安全管理体系认证,守护云端安全

在数据驱动的时代&#xff0c;云计算已成为企业业务的超级引擎&#xff0c;推动着企业飞速发展。然而&#xff0c;随着云计算的广泛应用&#xff0c;信息安全问题也日益凸显&#xff0c;如同暗流涌动下的礁石&#xff0c;时刻威胁着企业的航行安全。这时&#xff0c;云服务信息…

nacos环境搭建以及SpringCloudAlibaba脚手架启动环境映射开发程序

1&#xff1a;下载nacos 地址&#xff1a;https://github.com/alibaba/nacos/tags 2:选择server的zip包下载 3:启动mysql服务&#xff0c;新建数据库&#xff1a;nacos_yh 4&#xff1a;解压下载的nacos_server 进入conf目录 5&#xff1a;mysql运行sql脚本变得到下面的表 6&a…

stable diffusion 量化学习笔记

文章目录 一、一些tensorRT背景及使用介绍1&#xff09;深度学习介绍2&#xff09;TensorRT优化策略介绍3&#xff09;TensorRT基础使用流程4&#xff09;dynamic shape 模式5&#xff09;TensorRT模型转换 二、TensorRT转onnx模型1&#xff09;onnx介绍2&#xff09;背景知识&…

设计模式 行为型 访问者模式(Visitor Pattern)与 常见技术框架应用 解析

访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为设计模式&#xff0c;它允许你在不改变元素类的前提下定义作用于这些元素的新操作。这种模式将算法与对象结构分离&#xff0c;使得可以独立地变化那些保存在复杂对象结构中的元素的操作。 假设我们有一个复杂的对…

C++中引用参数与指针参数的区别与联系详解

在C++中,函数参数可以通过值传递、引用传递和指针传递。虽然指针传递在C和C++中都非常常见,但C++引入了引用类型,使得引用传递变得更加直接和易用。本文将详细介绍函数中引用参数和指针参数的区别与联系,并通过C++语言代码示例加以说明。 一、基本概念 值传递(Pass by Val…

初识JVM HotSopt 的发展历程

目录 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 各大 JVM look 看一下虚拟机 HotSopt 的发展历程 总结 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 即时编译 主要是…

html中鼠标位置信息

pageX&#xff1a;鼠标距离页面的最左边的距离&#xff0c;包括滚动条的长度。clientX&#xff1a;鼠标距离浏览器视口的左距离&#xff0c;不包括滚动条。offsetX&#xff1a;鼠标到事件源左边的距离。movementX&#xff1a;鼠标这次触发的事件的位置相对于上一次触发事件的位…

RabbitMQ 高可用方案:原理、构建与运维全解析

文章目录 前言&#xff1a;1 集群方案的原理2 RabbitMQ高可用集群相关概念2.1 设计集群的目的2.2 集群配置方式2.3 节点类型 3 集群架构3.1 为什么使用集群3.2 集群的特点3.3 集群异常处理3.4 普通集群模式3.5 镜像集群模式 前言&#xff1a; 在实际生产中&#xff0c;RabbitM…

【容器逃逸实践】挂载/dev方法

0、前置知识 怎么在容器里面执行命令&#xff0c; 有几种方法 # 不进入容器&#xff0c;创建并启动一个新的容器 $ docker run -itd --name ubuntu-test ubuntu /bin/bash # 进入容器&#xff0c;创建并启动一个新的容器 $ docker run -itd --name ubuntu-test ubuntu /bin…

linux: 文本编辑器vim

文本编辑器 vi的工作模式 (vim和vi一致) 进入vim的方法 方法一:输入 vim 文件名 此时左下角有 "文件名" 文件行数,字符数量 方法一: 输入 vim 新文件名 此时新建了一个文件并进入vim,左下角有 "文件名"[New File] 灰色的长方形就是光标,输入文字,左下…

Python爬虫-汽车之家各车系周销量榜数据

前言 本文是该专栏的第43篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者在文章《Python爬虫-汽车之家各车系月销量榜数据》中,有详细介绍,如何爬取“各车系车型的月销量榜单数据”的方法以及完整代码教学教程。 而本文,笔者同样以汽车之家平台为例,…

Python----Python高级(函数基础,形参和实参,参数传递,全局变量和局部变量,匿名函数,递归函数,eval()函数,LEGB规则)

一、函数基础 1.1、函数的用法和底层分析 函数是可重用的程序代码块。 函数的作用&#xff0c;不仅可以实现代码的复用&#xff0c;更能实现代码的一致性。一致性指的是&#xff0c;只要修改函数的代码&#xff0c;则所有调用该函数的地方都能得到体现。 在编写函数时&#xf…

欧拉路径算法

欧拉图&#xff1a; 对于应该连通图G&#xff0c;有&#xff1a; 1欧拉路径&#xff1a;一条路径&#xff0c;它能够不重复地遍历完所有的边&#xff0c;这个性质很像不重复地一笔画完所有边&#xff0c;所以有些涉及到欧拉路径的问题叫做一笔画问题。 2欧拉回路&#xff1a…

后端技术选型 sa-token校验学习 下 结合项目学习 后端鉴权

目录 后端注册拦截器 实现对 WebMvcConfigurer 接口的类实现 静态变量 方法重写 注册 Spring Framework拦截器 Sa-Token中SaServletFilter拦截器 思考 为什么使用两个拦截器 1. Spring Framework 拦截器 2. SaServletFilter 为什么要注册两个拦截器&#xff1f; 总结 …