`
wbj0110
  • 浏览: 1536501 次
  • 性别: 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

分享到:
评论

相关推荐

    裸眼多分支水平井开发特征及主控因素

    基于研究区内十余年的开发实践,利用统计分析、回归分析等手段将产气特征归纳为持续高产、先高后低、持续低产3种类型。研究表明,含气量、渗透率、微幅构造、煤体结构是裸眼多分支水平井能否高产且持续稳产的关键地质...

    Git中文学习手册 Git入门

    3 4 利用分支进行开发的工作流程 3 5 远程分支 3 6 分支的衍合 3 7 小结 4 服务器上的 Git 4 1 协议 4 2 在服务器上部署 Git 4 3 生成 SSH 公钥 4 4 架设服务器 4 5 公共访问 4 6 GitWeb 4 7 Gitosis 4 ...

    利用 TinyPNG 的 API ,开发的图片压缩工具.zip

    开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在...总之,开发工具极大地提升了软件工程师的工作效率,保证了开发过程中的准确性与一致性,同时也促进了团队合作,使得软件开发更系统化、规范化和工业化。

    EXCEL VBA应用开发与实例精讲

    本书结合作者多年的开发经验,循序渐进地讲述如何利用VBA来开发基于Excel的应用程序。主要内容包括:Excel的集成开发环境、程序调试技巧、VBA的语言基础、VBA常用对象、常用函数、界面设计以及ADO开发技术等,同时还...

    EXCEL VBA应用开发与实例精讲4/4

    本书结合作者多年的开发经验,循序渐进地讲述如何利用VBA来开发基于Excel的应用程序。主要内容包括:Excel的集成开发环境、程序调试技巧、VBA的语言基础、VBA常用对象、常用函数、界面设计以及ADO开发技术等,同时还...

    Android基础开发工具,提供一些便捷方法,并利用RxJava和Retrofit封装了网络请求组件.zip

    开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在...总之,开发工具极大地提升了软件工程师的工作效率,保证了开发过程中的准确性与一致性,同时也促进了团队合作,使得软件开发更系统化、规范化和工业化。

    使用Visual Studio 2005 Team Foundation Server 进行团队开发(第一部分)

    在需要分隔开发工作时,应怎样确定分支和合并策略。 第 III 部分:“生成”,向您展示如何设置团队生成、如何为开发团队提供连续集成生成、如何为 测试团队提供预定生成。此外还讨论了常见问题及其解决方法。 ...

    EXCEL VBA应用开发与实例精讲1/4

    本书结合作者多年的开发经验,循序渐进地讲述如何利用VBA来开发基于Excel的应用程序。主要内容包括:Excel的集成开发环境、程序调试技巧、VBA的语言基础、VBA常用对象、常用函数、界面设计以及ADO开发技术等,同时还...

    EXCEL VBA应用开发与实例精讲2/4

    本书结合作者多年的开发经验,循序渐进地讲述如何利用VBA来开发基于Excel的应用程序。主要内容包括:Excel的集成开发环境、程序调试技巧、VBA的语言基础、VBA常用对象、常用函数、界面设计以及ADO开发技术等,同时还...

    Git学习手册

    3 4 利用分支进行开发的工作流程 3 5 远程分支 3 6 分支的衍合 3 7 小结 4 服务器上的 Git 4 1 协议 4 2 在服务器上部署 Git 4 3 生成 SSH 公钥 4 4 架设服务器 4 5 公共访问 4 6 GitWeb 4 7 Gitosis 4 ...

    JBPM4工作流应用开始指南.rar

    完全解析jBPM4应用开发技术 9位工作流业内专家联袂推荐 随着在现代企业管理中对于信息化、流程化的深度挖掘,具有业务流程管理的技术和思想已经成为致力于全面掌控企业级应用系统人士“日常生活、居家旅行”的必备...

    CLEARCASE使用指南

    2.开发人员使用CLEARCASE 的工作流程;开发人员如何利用CLEARCASE 来建立自己的 工作空间;VIEW Config Spec 的了解以及分支(Branch)和标签(Label)的运用; 为了进一步增加对CLEARCASE 的了解,特别加入了某些...

    HTML5 CANVAS游戏开发实战(PDF和源代码)

    4.1.2 库件使用流程 / 83 4.2 图片的加载与显示 / 84 4.2.1 图片显示举例 / 84 4.2.2 lbitmapdata对象 / 86 4.2.3 lbitmap对象 / 87 4.3 层的概念 / 88 4.4 使用lgraphics对象绘图 / 90 4.4.1 绘制矩形 / 90...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    1.6.13 沿着分支开发 46 1.6.14 合并分支 47 1.6.15 使用NetBeans作为SVN客户端 48 1.7 本章小结 50 第2章 JSF的基本用法 51 2.1 MVC和JSF 52 2.1.1 MVC和常见MVC框架 52 2.1.2 JSF的优势 56 2.2 下载和安装JSF 57 ...

    mech458-final-project

    此工作流程过程反映在此存储库提交历史记录开始处的工作流程示例分支*中(请参阅见解> GitHub上的网络)。 *关于工作流程示例的注意事项: 调试分支很可能具有多个提交,这与工作流示例调试分支中看到的不同。

    react-starter:此入门套件适用于使用 React 的前端应用程序。 这适用于具有大量前端应用程序逻辑的项目,以及希望利用真正的组件驱动开发过程的开发人员

    这适用于具有大量前端应用程序逻辑的项目,以及希望利用真正的组件驱动开发过程的开发人员。 如果您有想法或改进,请随时打开拉取请求! 要查看示例,请查看examples分支!用法注意:您应该将此入门工具包与实用...

    Eclipse权威开发指南2.pdf

    5.5.3 通过建立分支来进行版本维护和新版本开发..... 152 5.6 其他功能...... 152 5.6.1 编辑器中的快速差别功能对CVS的支持..... 153 5.6.2 补丁程序:快速而又简单地共享更改..... 153 5.6.3 项目集:加快新...

Global site tag (gtag.js) - Google Analytics