git分支管理策略

2023-11-03

1  总览

git 的分支整体预览图如下:

从上图可以看到主要包含下面几个分支:

         master:git默认主分支(这里不作操作)。

         stable:稳定分支,替代master,主要用来版本发布。

         develop:日常开发分支,该分支正常保存了开发的最新代码。

         feature:具体的功能开发分支,只与 develop 分支交互。

         release:release 分支可以认为是 stable分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release分支,测试没有问题并且到了发布日期就合并到 stable分支,进行发布。

         bugfix:线上 bug 修复分支。
 

1.1  主分支

因为master分支我们不作操作,所以针对stable和develop这两个主分支来讲解。

             stable分支:用来发布,管理着多个稳定的版本。

             develop分支:就是我们日常开发的分支。

   使用这两个分支就具有了最简单的开发模式:develop 分支用来开发功能,开发完成并且测试没有问题后,则将 develop 分支的代码合并到 stable分支并发布。

在开发中如果我们只用主分支来进行管理,那么就会造成develop发布完成之后才能进行下一迭代的开发,开发会比较缓慢。如果线上代码发现bug之后,很难进行bug修复。

针对以上问题,建立辅助分支就能完美的解决。

1.2  辅助分支

辅助分支主要有一下几个:

                  1、feature分支。

                  2、release分支。

                  3、bugfix分支。

         通过这些分支,我们可以做到:团队成员之间并行开发,增加新功能更加容易,可以同时进行开发和版本发布、线上bug修复等。
 

1.2.1  feature分支

 feature 分支用来开发具体的功能,一般基于develop分支,最后完成功能后再合并到develop分支。

         比如,目前我们针对develop分支来做功能开发,在开发的过程中会有紧急需求需要开发,且在本次版本发布时间之前要能测试完成。我们可以基于之前稳定版本另开一个feature分支来做紧急需求的开发,发布并进行测试,完成之后再合并到develop分支上。

1.2.2  release分支

 release分支作为预发布分支,release 分支从 develop 分支 fork 出来,最终会合并到 develop 分支和 stable 分支,合并到 stable分支上就是可以发布的代码了。

       为什么我从develop分支fork出来,还要合并到develop分支中呢?因为我们在release分支上难免会有bug产生,修复bug也是在release分支上,所以必须要合并到develop分支。

1.2.3   bugfix分支

       bugfix 分支用来修复线上bug。当线上代码出现 bug 时,我们基于 stable 分支开一个bugfix分支,修复 bug之后再将 bugfix分支合并到stable分支并进行发布,同时develop 分支作为最新最全的代码分支,bugfix分支也需要合并到 develop 分支上去。

1.3   Tag标签

在我们用git做版本管理的时候,每次提交代码都会生成唯一标识本次提交的编码,对于这个编码我们直观的看是没有任何意义的。为了很好标识每个版本的变化,我们会在每个版本发布的同时打上一个tag,通常和版本名称相同。

       比如我们开发了V1.0、V1.1,不同的版本对应不同的代码,当我们在V1.1上面发现bug时,但并不确定V1.0是否存在bug,那我们怎么确认V1.0存在bug呢?怎么知道哪些提交的代码属于V1.0?此时tag就很有用了。我们在发布V1.0和V1.1这两个版本时,分别为这两个版本加上tag1.0和tag1.1,当我们需要验证V1.0是否存在bug时,切换到tag1.0上就可以验证了。
 

参考:

https://mr-dai.github.io/git-branching-model/

https://juejin.cn/post/6844903609461637134

https://juejin.cn/post/6967981728619544606

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git分支管理策略 的相关文章

  • 使用 TFS 个人访问令牌克隆 Git 存储库

    我正在尝试以编程方式克隆 git 存储库 我的 ASP NET MVC 应用程序正在创建并启动一个进程 处理进程的代码工作正常 但是当尝试使用本地 TFS PAT 克隆 git 存储库时 身份验证失败 我无法使用 NTLM 或要求用户输入凭
  • 无法使用 git 配置文件进行 ssh

    我知道它被问了很多次 但我无法得到我的问题的答案 我正在尝试使用配置文件 ssh 到系统 配置文件是 Host qa HostName 10 218 70 345 User user IdentityFile C Users bean ss
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • git diff 在尖括号中显示 unicode 符号

    我有一个带有 unicode 符号 俄语文本 的文件 当我修复一些拼写错误时 我使用git diff color words 看看我所做的改变 如果是 unicode 西里尔文 符号 尖括号会造成一些混乱 如下所示 cat p1 cat p
  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi
  • git - 更新 fork 的 master 并将我的分支重新建立到它之上?

    我分叉了一个 github 项目 然后将其克隆到本地 然后我在新分支中做了一些更改my github the project repo 然后我添加并提交了更改 并推送到我的 github 存储库并提交了拉取请求 所有者已收到我的请求 并希望
  • git push heroku master 权限被拒绝

    我正在关注 ruby railstutorial 我运行命令 git push heroku master 它吐出了这个错误 Permission denied publickey fatal Could not read from rem
  • Git:显示分支之间的差异,忽略合并的提交

    我的存储库历史记录看起来像这样 x y z branch a b c d e master 我想获得 branch 完整历史记录的单个差异 即 像 git diff 输出 我不想要像 git log p 产生的一大堆差异 而不包括任何从 m
  • 为什么我无法创建/签出该分支?

    我正在尝试创建本地 Git 分支 但它不起作用 以下是我正在使用的命令 tablet edit11 git checkout b edit 11 Switched to a new branch edit 11 tablet edit11
  • Git - 创建拉取请求而不分叉

    使用 git 已经有一段时间了 关于 git pull request 有很多教程和解释 其动机是什么等等 我遇到两种情况 1 分叉 git 仓库 我查看了一些公共 git 存储库并决定我想要做出贡献 所以我 通过以下方式创建重复的存储库F
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • Git 提交失败:“请使用 -m 或 -F 选项提供消息。”

    当我键入 git commit 命令来提交文件时 我收到以下错误消息 Microsoft Visual Studio 微软 找不到命令 错误 核心编辑器 Microsoft Visual Studio 存在问题 请使用 m 或 F 选项提供
  • 如何使用 Git 跟踪目录而不是文件?

    我最近开始使用 Git 但只有一件事遇到了麻烦 如何在不跟踪目录内容的情况下跟踪目录 例如 我正在开发的网站允许上传 我想跟踪上传目录 以便在分支等时创建它 但显然不是其中的文件 在开发分支中的测试文件或主控中的真实文件 在我的 gitig
  • Git 2.2.x 无缘无故更新旧包文件的时间戳

    Git 2 2 0 和 2 2 1 似乎修改了旧的时间戳 git objects pack pack pack偶尔会无缘无故地文件 它只是改变时间戳 内容是相同的 调试这一点很困难 因为它似乎很少进行更改 我在 2 2 0 之前的任何 Gi
  • Git 在哪里存储标签?

    Git 在哪里存储标签 我执行 git tag v0 1 0 v0 10 0 v0 11 0 但目录 git refs tags是空的 Git 将这些标签存储在哪里 谢谢 它们也可以存储在 git packed refs
  • Git - 如何将整个目录恢复到特定提交(删除任何添加的文件)

    我想恢复 git 中的目录 恢复其中的所有文件 并删除自该提交以来添加的所有文件 进行结账似乎只能满足我的第一个要求 但不会删除任何文件 我想出了最简单的解决方案 git rm path to dir git checkout
  • 使当前提交成为 Git 存储库中唯一(初始)提交?

    我目前有一个本地 Git 存储库 我将其推送到 Github 存储库 本地存储库有约 10 次提交 Github 存储库是其同步副本 我想要做的是从本地 Git 存储库中删除所有版本历史记录 以便存储库的当前内容显示为唯一提交 因此存储库中

随机推荐

  • 复制代码到eclipse中出现问题

    1 直接从网页上复制代码到eclipse中时 会连带着将空格也复制进去 导致eclipse一片红 闪瞎脆弱的心 直接将把报错行代码前面的空格删除 错误自动可修复 2 在遇到大括号前后代码出现错误这样的问题时 显示的是Syntax error
  • Oracle Error : ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 3000, maximum: 4000)

    author skate time 2008 02 25 最近在导数据的时候 提示如下错误 Oracle Error ORA 22835 Buffer too small for CLOB to CHAR or BLOB to RAW co
  • E4和C++ 开发-Unity 过度到 Unreal 4 对比参考详细

    1 两个编辑器的布局如下 1 1 unity 1 2 UE4 2 Editing Assets编辑资源 2 1 Detail面板就是负责编辑工程资源 类似于Unity里面的Inspector 3 两个引擎的部分术语对比 4 Projects
  • miui秒解bl锁_MIUI12解锁bl篇(原谅我的过失,接上篇文章)

    求原谅 真心求原谅 由于我的疏忽 上期教程不完整 对大家造成不便在这里给大家真诚道歉 对不起 请收下我的膝盖 我的上个教程 小米手机MIUI系统降级任意版本通用教程 MIUI12 MIUI9 因为需要接受bl才可以顺利使用miflash刷机
  • objective c 字符串各种处理

    关于字符串的各种操作 总结一下以便以后复习查找 内容简要 1 创建常量字符串 2 创建空字符串 给予赋值 3 在以上方法中 提升速度 initWithString方法 4 用标准c创建字符串 initWithCString方法 5 创建格式
  • 系统架构设计师之系统设计-面向对象设计-设计模式的分类

    系统架构设计师之系统设计 面向对象设计 设计模式的分类
  • unity学习之URP多相机以及多通道渲染

    默认已经创建好一个URP工程 不知道怎么创建可以看这里 摄像机堆叠 摄像机堆叠允许将多个摄像机的结果合成在一起 摄像机堆叠由一个基础 Base 摄像机和任意数量的额外叠加 Overlay 摄像机组成 当摄像机堆叠中的多个摄像机渲染到同一个渲
  • 16进制颜色代码

    16 进制颜色代码 16 进制颜色代码颜色的组成方式 16进制代码 前二位代表R值 中间二位代表G 末二位代表B 即前两位表示红色 中间两位表示绿色 最后两位表示蓝色 以0 1 2 3 4 5 6 7 8 9 A B C D E F共16位
  • 高云FPGA系列教程(2):FPGA点灯工程创建、程序下载和固化

    文章目录 toc 1 工程目录创建 2 新建工程 3 设计输入 4 设计仿真 5 综合 6 管脚分配 7 时钟约束 8 比特流文件生成 9 程序下载 10 程序固化 11 总结 12 工程下载 本文是高云FPGA系列教程的第2篇文章 介绍完
  • 产业大数据应用:洞察区域产业实况,把握区域经济脉搏

    随着新一代信息技术的崛起 我们进入了大数据时代 在这个时代 数据作为基本生产要素不仅改变着我们的日常生活 更是在区域产业经济发展中扮演着重要角色 它赋予了政府 企业和投资者敏锐的洞察力 一 摸清区域经济现状 基于区域产业经济数据的收集及导入
  • Halcon-表面检测-----裂纹检测

    对应示例程序 detect mura defects blur hdev 目标 实例实现LCD上有很多污点干扰下 检测LCD的印痕检测 思路为 对LCD图像进行拆分 提取RGB三个分量 对B分量进行处理 将其转换为频域内图像 并对其进行高斯
  • 数据分析行业,主要有哪些基本职位,具体的职责是什么?

    1 数据跟踪员 机械拷贝看到的数据 很少处理数据 虽然这个工作的人还不能称作数据分析师 但是往往作这样工作的人还都自称是数据分析师 这样的人 只能通过 系统看到有限的数据 并且很少去处理数据 甚至不理解数据的由来和含义 只是机械的把自己看到
  • 21届毕业生,想做软件测试,没工作经验而且已经毕业,怎么找软件测试工作?

    如果说你是上面现状去找软件测试工作 而且居然还找到了 那么可能会是如下几种情况 1 该公司对软件质量要求很低 随便来个会点点点的 能够检查功能是否正常即可 毕竟我是真遇到过一个CEO说 软件测试很难吗 我都能测试啊 没必要找测试人员 开发完
  • 不对等的爱情该不该放弃

    刚好两个人对爱情都有勇气全力以赴是多么难得的巧合 每个人都有自己的过往 我期望我们在最适当的时候相遇 一个投入的人碰上一个疏离的人 结局必定黯然 下一次 我希望我们相遇的时间会好一点 爱情经常出现一种奇怪的模式 你很用力的去爱一个人 对方却
  • jmeter JDBC request提示“Cannot convert value '0000-00-00 00:00:00' from column 6 to TIMESTAMP.”

    在学习jmeter数据库相关的过程中 在请求数据库时报错 Cannot convert value 0000 00 00 00 00 00 from column 6 to TIMESTAMP 解决方法 更改连接数据库方式 在连接 jdbc
  • C++基础入门教程

    1 C 初识 1 1 第一个C 程序 编写一个C 程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1 1 1 创建项目 Visual Studio是我们用来编写C 程序的主要工具 我们先将它打开 1 1 2 创建文件 右键源文
  • 获取本地硬盘信息

    using System using System Runtime InteropServices using System Text namespace driverId Serializable public struct HardDi
  • JS-语法进阶

    JS 语法进阶 三元运算符 类数组对象
  • 蓝桥杯 51单片机 AT24C02

    工作电压为1 8v 6v 第7引脚 WP 接地时允许正常读写 24C02设备地址包括固定部分和可编程部分 编程部分由A2 A1 A0三个硬件引脚来控制 设备地址最后一位用于设置数据传输方向 读 写 在IIC总线协议中 设备地址是起始信号后第
  • git分支管理策略

    1 总览 git 的分支整体预览图如下 从上图可以看到主要包含下面几个分支 master git默认主分支 这里不作操作 stable 稳定分支 替代master 主要用来版本发布 develop 日常开发分支 该分支正常保存了开发的最新代