介绍一个成功的 Git 分支模型https://www.oschina.net/translate/a-successful-git-branching-model?print
一个成功的Git分支模型https://www.jianshu.com/p/b357df6794e3
1. 为什么是git?
可以在本地提交,不同步到服务器;
可以在本地创建分支,不同步到服务器;
可以拉取别人的代码,并行开发;
git是分布式的版本控制系统,在使用git的时候,每次代码的提交都不必同步到远程服务器中,开发人员可以在外部网络环境(无法连接内网),甚至离线的情况下进行代码的版本控制,作为非集中式的版本控制系统,开发人员可以在本地创建分支而不同步到服务器上,这一点hi构成文中git分支模型的另一大基础。
2.主分支
*master分支
“准备好进行生产的状态”
每次新的合并通常都表明一个新的版本的发布
master作为git中默认的主分支,git分支开发模型中,master分支的HEAD节点始终处于“准备好进行生产的状态”,即master分支的HEAD节点所指向的版本始终是可以用于生产环境的正式版本。当其他分支的代码版本合并到master分只时(随后打上版本标签),通常意味着一个新的正式版本已经发布。
*develop分支
开发分支,是一个待发布版本。
通常也会不断有新的分支合并进来
达到稳定点的时候,会将dev分支合并到master分支上,并打上tag标签
develop分支作为另一个主分支,其HEAD节点总是指向下一个待发布版本的最新变化。develop分支的版本变更通常来源于辅助分支的合并(稍后介绍),因为develop分支也常被称为“整合分支”。当develop分支达到某一个稳定点可进行新版本的发布的时候,develop分支上的所有变更应该被合并到master分支并打上tag标签。
3.辅助分支
除了master分支和develop分支这两个主分支以外,git分支模型中拥有一些“辅助分支”,在团队开发中对develop分支和master分支进行帮助,例如对新需求的开发,新版本发布前的准备工作以及新版本bug的紧急修复等。和主分支不同的是这些分支的生命周期都是有限的,最终将会被删除。辅助分支有以下三类分支:
*需求分支(Feature Branch)
*发布分支(Release Branch)
*修复分支(Hotfix Branch)
以上三种辅助分支,每一种都有其特定的功能,并遵守其各自严格的规则,例如分支的输入分支、分支的输出(合并)分支等。下文将逐一描述。
1)需求分支(Feature Branch)
分支来源:develop分支
分支去向: develop分支
分支命名:任意命名,除master,develop,以“release-”开头,以“hotfix-”开头的分支以外。
需求分支通常仅仅存在于开发者的代码仓库中(本地仓库),并不上传到远程分支。
如何创建需求分支
创建需求分支的时候,该分支必须从develop分支得到:
该命令从develop分支创建一个新的分支“feature_branch”,并从当前分支切换到“feature_branch”分支,相当于:
将已完成的需求分支合并到develop分支
已完成的需求分支需要被合并到develop分支,作为待发布版本的需求之一:
2)发布分支
分支来源:develop分支
分支去向:develop分支和master分支
分支命名:以"release-"开头
发布分支用于辅助新版本(生产环境)发布的准备工作,例如小bug的修复,或者版本号的修改等。使用待发布分支的好处是,当从develop分支中创建发布分支以后,develop分支便可以进行新版本之后需求的研发工作,从而既不会影响到最新的研发进度,也不会影响到新版本的发布。
创建发布分支
发布分支以develop分支作为源分支,例如:目前develop分支上的所有需求将作为1.2发布,这时候可以创建一个分支“release-1.2”。此时可以继续在develop分支上进行新需求的研发,而1.2版本的发布工作将由“release-1.2”分支完成:
注:如果在发部分之进行小型bug修改,则需要将提交后的代码合并到develop分支中
完成发布分支
当发布分支完成代码的提交(如果修复过bug,则合并到develop分支)后,需要将发布分支合并到master分支上,并进行tag操作,:如:
ps合并到develop的操作:
完成合并操作之后,删除发布分支:
3)修复分支(Hotfix Branch)
分支来源:master分支
分支去向:develop分支和master分支
分支命名:以“hotfix-”开头
创建修复分支
完成修复分支
不要忘记合并分支到develop分支
删除分支