git分支管理规范

良好的分支管理有利于整个项目的稳步迭代与团队成员间的密切合作,故而本文将介绍一个成熟的git分支管理模型,用作实践参考。

最终效果图

主分支

master和develop主分支

中心仓库持有两条生命期为无限的分支:
1.主分支(master)
2.开发分支(develop)

master 分支

我们将 origin/master 作为一条主分支,其头指针 HEAD 总是指向一个生产就绪的状态。所以,每一次有修改部分被合并到 master 分支时,就意味着一个新的产品已经被发行出来,即我们的git脚本将会自动构建或回滚我们的软件,并将其部署到生产服务器中。

develop 分支

我们把 origin/develop 作为另一条主分支,其头指针 HEAD 总是指向最新一次提交的开发更新版本,该更新版本用于下一个版本的发行。这也就是说,当 develop 分支上的代码达到了一个相对稳定的、能发行的时候,所有在 develop 分支上的代码都应该被合并到 master 分支上去,并用一个新的发行号来标记它。

支承分支

在主分支下,本模型使用了三种不同的支承分支来帮助解决团队成员之间的平行开发、发行准备及现场部署所带来的问题。不同于主分支,这些支承分支的生命周期是有限的,最终肯定会被移除。

支承分支包括:
1.特征分支(Feature branches)
2.发行分支(Release branches)
3.热补丁分支(Hotfix branches)

Feature 分支

Feature 分支

Feature 分支从 develop 分支分离出来,最终会合并到 develop 分支中去。

有时,我们开发新功能的时候,并不知道该新功能将会在未来的哪个版本发行,甚至会被丢弃。这时就可以使用 Feature 分支,当该新功能开发完成时,Feature 分支会被合并到 develop 分支,或者直接被丢弃。

Release 分支

Release 分支从 develop 分支分离出来,最终会合并到 master/develop 分支中去。

Release 分支用于为新产品的发行作准备,如漏洞修补,准备元数据等。若当前版本为1.1.5的产品有一个大的版本1.2(而不是1.1.6或者2.0)即将推出,,那么我们就会从 develop 分支分离一条 Release 分支,当该 Release 分支到达能真正发行的状态时,就可以将其合并到 master 分支上,同时,为保证以后的发行不会遗漏这些小漏洞的修复,还需将其合并回 develop 分支。

注意,严格禁止在 release 分支上添加新的大功能。

Hotfix 分支

Hotfix 分支

Hotfix 分支从 master 分支分离出来,最终会合并到 master/develop 分支中去。

若当前产品有一个漏洞必须得就快修复,那么我们可以从 master 分支上分离出一条 hotfix 分支,如此一来,当团队中有一个成员去修复产品漏洞时,其他工作于 develop 分支的团队成员就可以继续工作,而不相互产生影响了。

特别的,当同时有一个 release 分支存在时,因为release 分支最终也会合并到 develop 分支,所以 hotfix 分支应该合并到该 release分支,而不是 develop 分支。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Git 仓库申请流程 1. 开发主管向Git 管理员提交Git 仓库申请【邮件:发送给Git 管理员,抄送给项目经...
    骚包霸天虎阅读 6,423评论 0 0
  • 1 GIT,在技术层面上,绝对是一个无中心的分布式版本控制系统,但在管理层面上,我建议你保持一个中心版本库。 2 ...
    聂顺阅读 4,216评论 0 1
  • 转载 GIT工作流简介 功能驱动开发 "功能驱动式开发"(Feature-driven development,简...
    张志_koen_zhang阅读 14,944评论 1 6
  • # 分支管理 Edit ## 分支分类及作用 Edit 一共5类分支,分别为master,dev,feature,...
    聂顺阅读 4,985评论 0 0
  • Git 仓库申请流程 开发主管向 Git 管理员提交 Git 仓库申请【邮件:发送给 Git 管理员,抄送给项目经...
    alterem阅读 3,982评论 0 1

友情链接更多精彩内容