`
wbj0110
  • 浏览: 1598304 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

利用分支进行开发的工作流程

    博客分类:
  • Git
Git 
阅读更多

利用分支进行开发的工作流程

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

长期分支

由于 Git 使用简单的三方合并,所以就算在较长一段时间内,反复多次把某个分支合并到另一分支,也不是什么难事。也就是说,你可以同时拥有多个开放的分支,每个分支用于完成特定的任务,随着开发的推进,你可以随时把某个特性分支的成果并到其他分支中。

许多使用 Git 的开发者都喜欢用这种方式来开展工作,比如仅在 master 分支中保留完全稳定的代码,即已经发布或即将发布的代码。与此同时,他们还有一个名为 developnext 的平行分支,专门用于后续的开发,或仅用于稳定性测试 — 当然并不是说一定要绝对稳定,不过一旦进入某种稳定状态,便可以把它合并到 master 里。这样,在确保这些已完成的特性分支(短期分支,比如之前的 iss53 分支)能够通过所有测试,并且不会引入更多错误之后,就可以并到主干分支中,等待下一次的发布。

本质上我们刚才谈论的,是随着提交对象不断右移的指针。稳定分支的指针总是在提交历史中落后一大截,而前沿分支总是比较靠前(见图 3-18)。


图 3-18. 稳定分支总是比较老旧。

或者把它们想象成工作流水线,或许更好理解一些,经过测试的提交对象集合被遴选到更稳定的流水线(见图 3-19)。


图 3-19. 想象成流水线可能会容易点。

你可以用这招维护不同层次的稳定性。某些大项目还会有个 proposed(建议)或 pu(proposed updates,建议更新)分支,它包含着那些可能还没有成熟到进入 nextmaster 的内容。这么做的目的是拥有不同层次的稳定性:当这些分支进入到更稳定的水平时,再把它们合并到更高层分支中去。再次说明下,使用多个长期分支的做法并非必需,不过一般来说,对于特大型项目或特复杂的项目,这么做确实更容易管理。

特性分支

在任何规模的项目中都可以使用特性(Topic)分支。一个特性分支是指一个短期的,用来实现单一特性或与其相关工作的分支。可能你在以前的版本控 制系统里从未做过类似这样的事情,因为通常创建与合并分支消耗太大。然而在 Git 中,一天之内建立、使用、合并再删除多个分支是常见的事。

我们在上节的例子里已经见过这种用法了。我们创建了 iss53hotfix 这两个特性分支,在提交了若干更新后,把它们合并到主干分支,然后删除。该技术允许你迅速且完全的进行语境切换 — 因为你的工作分散在不同的流水线里,每个分支里的改变都和它的目标特性相关,浏览代码之类的事情因而变得更简单了。你可以把作出的改变保持在特性分支中几 分钟,几天甚至几个月,等它们成熟以后再合并,而不用在乎它们建立的顺序或者进度。

现在我们来看一个实际的例子。请看图 3-20,由下往上,起先我们在 master 工作到 C1,然后开始一个新分支 iss91 尝试修复 91 号缺陷,提交到 C6 的时候,又冒出一个解决该问题的新办法,于是从之前 C4 的地方又分出一个分支 iss91v2,干到 C8 的时候,又回到主干 master 中提交了 C9 和 C10,再回到 iss91v2 继续工作,提交 C11,接着,又冒出个不太确定的想法,从 master 的最新提交 C10 处开了个新的分支 dumbidea 做些试验。


图 3-20. 拥有多个特性分支的提交历史。

现在,假定两件事情:我们最终决定使用第二个解决方案,即 iss91v2 中的办法;另外,我们把 dumbidea 分支拿给同事们看了以后,发现它竟然是个天才之作。所以接下来,我们准备抛弃原来的 iss91 分支(实际上会丢弃 C5 和 C6),直接在主干中并入另外两个分支。最终的提交历史将变成图 3-21 这样:


图 3-21. 合并了 dumbidea 和 iss91v2 后的分支历史。

请务必牢记这些分支全部都是本地分支,这一点很重要。当你在使用分支及合并的时候,一切都是在你自己的 Git 仓库中进行的 — 完全不涉及与服务器的交互。

http://git-scm.com/book/zh/Git-%E5%88%86%E6%94%AF-%E5%88%A9%E7%94%A8%E5%88%86%E6%94%AF%E8%BF%9B%E8%A1%8C%E5%BC%80%E5%8F%91%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B

分享到:
评论

相关推荐

    利用jenkins实现git不同分支的构建.docx

    本篇文章将详细介绍如何在Jenkins中利用一个Job实现对Git不同分支的构建,从而提高开发效率和代码质量。 首先,我们需要在Jenkins上创建一个自由风格的Job。自由风格的Job允许我们自定义构建流程,适合处理各种不同...

    eclipse中利用svn创建、合并、切换分支

    - **Mergearangeofrevision**:适用于并行开发过程中定期同步分支的情况,可以选择指定版本范围内的变更进行合并。 - **Reintegrateabranch**:当您希望将分支的所有变更合并回主干时,应选择这种方式。 #### 三...

    vue+element工作流程图

    总的来说,“vue+element工作流程图”项目展示了如何利用现代前端技术构建高度自定义和灵活的工作流管理工具,它结合了 Vue.js 的强大功能和 Element UI 的易用性,为业务流程管理提供了一个高效的解决方案。

    微信小程序开发-分支管理.pptx

    Git作为一种强大的分布式版本控制系统,提供了灵活的分支管理功能,对于微信小程序的开发流程有着显著的优化作用。本讲座将深入讲解如何利用Git进行分支管理和微信小程序的协同开发。 首先,理解Git中的分支概念至...

    利用INFOPATH 2007 + VS2005开发MOSS工作流

    在工作流逻辑部分,我们可以使用WF活动库来定义工作流程,如审批步骤、条件分支和循环等。最后,测试并调试工作流,确保其按预期运行。 **部署篇** 完成开发后,我们需要将工作流部署到MOSS环境中。在“部署篇”中...

    用SVN分支管理多版本

    - **持续迭代**:对于后续版本的开发,遵循相同的流程进行分支管理。 通过上述流程,我们可以有效地管理不同版本之间的代码,确保每个版本都能够独立地进行开发、测试和维护,从而提高整个项目的开发效率和质量。 ...

    C# 开发的工作流程序代码

    总结来说,C#开发工作流程序涉及到WF框架的理解与使用,活动的定义与组合,工作流的控制与流转,以及可能借助于特定框架如RoadFlow进行开发。掌握这些知识点,开发者就能创建出适应不同业务需求的高效工作流系统。

    cvs分支以及合并的详细处理

    这样既保证了问题能够及时得到解决,又不会干扰到主线的正常开发流程。 #### 二、分支创建步骤 1. **准备工作**: - 假设项目已经有三个版本,分别是1.1(tag1_1)、1.2(tag1_2)和1.3(tag1_3)。 - 首先,...

    svn创建分支的做法.rar

    当你的分支开发完成,需要将更改合并回主分支。首先切换回主分支:`svn switch http://your-repo-url/trunk`,然后执行`svn merge http://your-repo-url/branches/my-feature-branch`来合并分支,最后提交合并后的...

    Git协作开发流程规范

    ### Git协作开发流程规范 #### 一、Git协作开发流程的重要性及...总之,Git协作开发流程规范是保证项目顺利进行的关键。通过合理利用Git的功能和特性,可以构建出高效、有序的工作流程,进而提升团队的整体协作效率。

    利用INFOPATH_2007_+_VS2005开发MOSS工作流(开发篇).pdf

    - **设计工作流**:利用VS2005的工作流设计器进行设计,包括活动和分支等。 - **设置工作流活动**:定义每个活动的行为和条件。 - **添加代码到活动**:为工作流中的特定活动编写业务逻辑。 - **强签名工作流...

    SVN如何建立版本分支

    在Subversion (SVN) 中,为了有效地管理项目的开发流程和版本控制,通常会在项目版本库中建立以下三个主要的目录: 1. **Trunk**:作为项目的主干分支,所有的日常开发活动都在这里进行。 2. **Branches**:用于...

    BPM常见流程模式:会签流程、或签流程、分支流程、并行流程.docx

    在Java开发的低代码环境中,BPM流程模式对于构建工作流和企业内部流程至关重要。BPMN2.0(Business Process Model and Notation 2.0)规范是BPM领域的一个重要标准,它定义了一系列流程模式,包括会签流程、或签流程...

    Git分支使用方法,详细方法

    本文将详细介绍Git分支的使用方法,包括查看分支、创建分支、切换分支、在新分支上工作、提交更改、切换回主分支、删除分支以及合并分支,并简要讨论了处理合并冲突的过程。 一、查看可用分支 在Git中,你可以使用`...

    3华为-敏捷分支解决方案(朱卓莉)

    2. **开发流程**:开发人员在自己的特性分支上进行工作,完成后再合并到开发分支进行集成测试。通过持续集成工具自动进行代码构建和测试,确保代码质量。当功能成熟时,再合并到发布分支进行预发布测试,最后合并到...

    微信小程序开发-课程仓库和分支的创建.pptx

    接着,为了更好地管理开发流程,你需要在远程仓库合理规划和建立所有必要的分支。分支允许你在不影响主分支(通常为master或main)的情况下进行新功能的开发或修复bug。例如,你可以为每一章节或每个小任务创建一个...

    我的工作流系统开发总结

    此外,持续集成(CI)和持续部署(CD)工具,如Jenkins或Travis CI,也是现代开发流程中的关键元素,它们自动构建、测试和部署代码,确保代码质量与稳定性。 其次,工具的选择和使用对于工作效率至关重要。工作流系统...

Global site tag (gtag.js) - Google Analytics