文章目录

  • 长期分支
  • 主题分支

超详细 Git 图文版小白教程(持续更新)

现在你已经学会新建和合并分支,那么你可以或者应该用它来做些什么呢? 在本节,我们会介绍一些常见的利用分支进行开发的工作流程。而正是由于分支管理的便捷, 才衍生出这些典型的工作模式,你可以根据项目实际情况选择一种用用看。

长期分支

因为 Git 使用简单的三方合并,所以就算在一段较长的时间内,反复把一个分支合并入另一个分支,也不是什么难事。 也就是说,在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;你可以定期地把某些主题分支合并入其他分支中。

许多使用 Git 的开发者都喜欢使用这种方式来工作,比如只在 main 分支上保留完全稳定的代码——有可能仅仅是已经发布或即将发布的代码。 他们还有一些名为 develop 或者 next 的平行分支,被用来做后续开发或者测试稳定性——这些分支不必保持绝对稳定,但是一旦达到稳定状态,它们就可以被合并入 main 分支了。 这样,在确保这些已完成的主题分支(短期分支,比如之前的 iss53 分支)能够通过所有测试,并且不会引入更多 bug 之后,就可以合并入主干分支中,等待下一次的发布。

事实上我们刚才讨论的,是随着你的提交而不断右移的指针。 稳定分支的指针总是在提交历史中落后一大截,而前沿分支的指针往往比较靠前。

趋于稳定分支的线性图:

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

趋于稳定分支的工作流(“silo”)视图:

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

主题分支

主题分支对任何规模的项目都适用。 主题分支是一种短期分支,它被用来实现单一特性或其相关工作。 也许你从来没有在其他的版本控制系统(VCS)上这么做过,因为在那些版本控制系统中创建和合并分支通常很费劲。 然而,在 Git 中一天之内多次创建、使用、合并、删除分支都很常见。

你已经在上一节中你创建的 iss53hotfix 主题分支中看到过这种用法。 你在上一节用到的主题分支(iss53hotfix 分支)中提交了一些更新,并且在它们合并入主干分支之后,你又删除了它们。 这项技术能使你快速并且完整地进行上下文切换(context-switch)——因为你的工作被分散到不同的流水线中,在不同的流水线中每个分支都仅与其目标特性相关,因此,在做代码审查之类的工作的时候就能更加容易地看出你做了哪些改动。 你可以把做出的改动在主题分支中保留几分钟、几天甚至几个月,等它们成熟之后再合并,而不用在乎它们建立的顺序或工作进度。

考虑这样一个例子,你在 main 分支上工作到 C1,这时为了解决一个问题而新建 iss91 分支,在 iss91 分支上工作到 C4,然而对于那个问题你又有了新的想法,于是你再新建一个 iss91v2 分支试图用另一种方法解决那个问题,接着你回到 main 分支工作了一会儿,你又冒出了一个不太确定的想法,你便在 C10 的时候新建一个 dumbidea 分支,并在上面做些实验。 你的提交历史看起来像下面这个样子:

拥有多个主题分支的提交历史:

现在,我们假设两件事情:你决定使用第二个方案来解决那个问题,即使用在 iss91v2 分支中方案。 另外,你将 dumbidea 分支拿给你的同事看过之后,结果发现这是个惊人之举。 这时你可以抛弃 iss91 分支(即丢弃 C5C6 提交),然后把另外两个分支合并入主干分支。 最终你的提交历史看起来像下面这个样子:

合并了 dumbideaiss91v2 分支之后的提交历史:

请牢记,当你做这么多操作的时候,这些分支全部都存于本地。 当你新建和合并分支的时候,所有这一切都只发生在你本地的 Git 版本库中 —— 没有与服务器发生交互。

(本节没有操作,完全转自Git官方文档。)

Git(15)- Git 分支 - 分支开发工作流相关推荐

  1. Git之深入解析Git的杀手级特性·分支管理与分支变基的开发工作流以及远程分支的跟踪

    一.Git 分支简介 几乎所有的版本控制系统都以某种形式支持分支,使用分支意味着可以把工作从开发主线上分离开来,以免影响开发主线.在很多版本控制系统中,这是一个略微低效的过程,常常需要完全创建一个源代 ...

  2. 4 Git 分支 - 分支开发工作流

    分支开发工作流 现在你已经学会新建和合并分支,那么你可以或者应该用它来做些什么呢?在本节,我们会介绍一些常见的利用分支进行开发的工作流程.而正是由于分支管理的便捷,才衍生出这些典型的工作模式,你可以根 ...

  3. Git笔记(14) 分支开发工作流

    Git笔记(14) 分支开发工作流 1. 长期分支 2. 特性分支 1. 长期分支 因为 Git 使用简单的三方合并 所以就算在一段较长的时间内,也可反复把一个分支合并入另一个分支 也就是说,在整个项 ...

  4. 【Git】Git分支、与gitee平台对接、Fork、Git工作流、在idea中配置Git、分支实战

    文章目录 一 分支 1 分支原理 2 分支实操 3 版本冲突 (1)冲突产生 (2)合并时冲突 (3)解决合并时冲突 二 与平台对接 1 对接流程 2 实战演练 (1)push (2)clone (3 ...

  5. Git 分支分支工作流

    分支工作流 长期运行的分支机构 主题分支 现在您已经掌握了分支和合并的基础知识,那么您可以或应该如何处理它们?在本节中,我们将介绍这种轻量级分支使一些常见的工作流成为可能,因此您可以决定是否要将它们合 ...

  6. Git学习(了解版本控制、Git安装配置、Git基本理论、Git搭建、Git文件操作、使用码云或Github、IDEA集成Git,Git分支开发)

    学习git之前,我们需要先明白一个概念,版本控制! 版本控制 什么是版本控制 版本迭代,新的版本!版本管理器. 版本控制(Revision Control)是一种在开发的过程中用于管理我们对文件.目录 ...

  7. Git的使用——Git 常用命令总结、Git的使用、Git 的分支、远程仓库的使用、IDEA 中使用Git、Git 工作流(Git Flow、Github Flow、GitLab Flow)

    Git的使用--Git 常用命令总结.Git的使用.Git 的分支.远程仓库的使用.IDEA 中使用Git 一.Git 常用命令总结 为了方便后续查找命令,故先把总结放前面,教程放后面 1.git 基 ...

  8. git从master转到开发分支

    本文翻译自:git pull from master into the development branch I have a branch called dmgr2 (development) an ...

  9. Git新建临时分支进行开发后合并至master

    需求:根据master新增最新周修改的小功能,但是此时dev分支正在开发新的1.10的需求了,并且最新周的要先上线,步骤如下. 1.根据master新建立分支本地dev02:git checkout ...

最新文章

  1. 线上环境HBASE-1.2.0出现oldWALs无法自动回收情况;
  2. PHP笔记 ---关于web应用的安全性问题
  3. linux gunzip r .tar,Linux命令之文件归档、压缩、解压缩tar,gzip,gunzip,bzip2,bunz -电脑资料...
  4. 动态规划应用--搜索引擎拼写纠错
  5. SpringBoot从入门到精通教程
  6. iostream头文件简单理解
  7. AutoCAD批量打印工具,batchplot,AcmeCADConverter使用注意事项
  8. 猜年龄、猜数字的python程序
  9. 一文学会Webpack实用功能|加载器篇
  10. 弘辽科技:店铺前期可以不上宝贝吗?店铺如何上宝贝?
  11. html语言制作表格模板,十个最简单实用的Table设计模板
  12. 快搜新爬虫研发的曲折之路,十年磨一剑
  13. STM32F100X RCC_APB2Periph_AFIO--复用IO时钟的使用
  14. 2017年中国智慧城市PPP模式发展情况分析
  15. 文献解读 | CTSE酶激活的AIE荧光探针运用于胰腺癌病理诊断
  16. 《云计算技术与应用》最新章节测试答案
  17. 【题目记录】——The 2021 ICPC Asia Jinan Regional Contest
  18. mac系统双开应用(QQ、微信)
  19. 在IntelliJ IDEA中使用Spring Initializr创建项目以及Maven集成与配置
  20. 航模无人机中PWM信号频率浅谈

热门文章

  1. oracle基础入门(四)
  2. idea文件折叠显示出来配置
  3. 开源直播OBS ( Open Broadcaster Software ) 多机位,多场景切换
  4. 真让人捉急:连路都走不稳,怎能号称“仿人机器人”?
  5. 循序渐进学Python 1 安装与入门
  6. Spark Tungsten揭秘 Day3 内存分配和管理内幕
  7. beetle.express一通讯案例测试结果
  8. FragmentPagerAdapter FragmentPagerAdapter .
  9. Apache Struts 1宣告退出舞台
  10. 全新的Windows Phone 8开发资源汇总