GIT分支版本管理

简介:

   目前常用的git分支管理实践有三种,即单主干(Trunk-Based development),GitHub Flow与GIT Flow三种。

   TBD与SVN类似。开发和修复均在trunk上进行,按照周期打出Tag。发布首选Tag,如Tag不满足需求,则从trunk上打包发布。

   GitHub属于双分支体系,一个是Master,一个是开发分支,master提供生产系统的发布,开发分支用于开发提交;任何修改、开发、功能都在从Master分支拉出的新分支进行,新分支代码完成通过测试和代码审查后,合并入master部署发布。

   早期的OA发布是一种变体的GitHub,即所有开发人员共用develop分支,test系统由develop打包,测试完成后合并至master。图示如下:

wKiom1fFGGeSJYLoAACGCn8nKE0637.png-wh_50

  

   OA开发是一个长期的较长版本发布周期的持续集成、随时发布的项目。GitHub并不适合。而另外一种Git分支管理即Git Flow概念的核心则是版本发布,适用于持续集成、随时发布的项目。原生的Git Flow包括五种分支,master\hotfix\release\develop\feature;develop上为下一个版本将要发布的内容;当一个新功能需要开发时,从develop上新建feature分支,开发完成后合并至develop,删除feature;当需要发布时,从develop拉出release分支,在release上打包部署测试,需修复时,直接在release上提交,修复后再次打包部署测试;当release上通过测试后,将修复合并至develop和master,生产则从master打包。   

   我们所采用的变体的GitFLow图示如下:

wKiom1fFGuzS_VJYAADLmKY9i4I021.jpg-wh_50

   正如《Git 分支管理最佳实践》一文中所述的“每个开发团队都应该根据团队自身和项目的特点来选择最适合的分支实践”、“首先是项目的版本发布周期。如果发布周期较长,则 git-flow 是最好的选择。git-flow 可以很好地解决新功能开发、版本发布、生产系统维护等问题;如果发布周期较短,则 TBD 和 GitHub flow 都是不错的选择。GitHub flow 的特色在于集成了 pull request 和代码审查。”。我们对Git flow进行了变体。将feature与develop合并为develop,只采用git flow的四个概念,即master hostfixes,release和develop。

各个分支作用

Master分支 :仅用于正式环境发布重大版本 (体现在正式环境)

Hotfixes分支:仅用于正式环境版本发布后修复正式环境BUG(当bug修复完成需合并至develop(或者release分支)程序员不应该去合并master分支当bug解决完毕后并且测试人员测试认可后才可以合并至master分支上。

Release 分支:预发布分支,当确定预发布时间后打包预发布版本,打包后在预发布版本上测试测试后问题将在预发布分支上解决测试完全没有问题后合并至master develop分支上(体现在oarelease环境)

Develop分支:日常开发分支,日常新功能开发在此分支上但其他分支所做的操作最终都会合并在此分支上(体现在oatest环境)

整体发布步骤:

 1.项目经理确定发布新版本时间,确定后在Release 分支上打出tag标签确定版本。

 2.测试人员根据release版本的功能验证,及测试,测试出现问题后提bug,并附带版本

 3.开发人员分配到bug后切换Release 分支上修复bug,只修复bug提交

 4测试人员根据jira提交情况在Release 分支上进行更新并且验证新版本bug

 5.当验证完毕后,将release分支合并至master分支及Develop分支。

 6.正式环境打包更新

 异常发布步骤:

当正式环境出现重大bug后需更新正式环境

发现重大缺陷,

Hotfixes分支上解决bug,当解决完后需要将代码合并此时会出现两种情况

⑴.当项目处于整体发布时需要将Hotfixes合并至Release 分支上。

⑵.当项目不处于整体发布阶段将Hotfixes合并至Develop分支。

   以上是固化的Git flow。但在实践中hotfixes较少使用,且随着代码的稳定,flow显得臃肿和难于理解。在随着项目团队的进一步缩小和代码的逐渐稳定,我们又将四分支flow修正为三分支flow,即develop,master,release。对Master上的修复采用直接提交并合并至release和develop的方式。如下图:

wKiom1fFHVCT2qFnAADmPIa6jbQ820.png-wh_50




     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/1844271,如需转载请自行联系原作者




相关文章
|
1月前
|
开发工具 git
Git教程:深入了解删除分支的命令
【4月更文挑战第3天】
52 0
Git教程:深入了解删除分支的命令
|
2月前
|
开发工具 git 开发者
|
2月前
|
开发工具 git
|
3月前
|
前端开发 算法 开发工具
Git分支批量清理利器:自定义命令行插件实战
Git分支批量清理利器:自定义命令行插件实战
50 0
|
3月前
|
开发工具 git
Git从远程仓库拉取指定的分支
Git从远程仓库拉取指定的分支
169 0
|
2月前
|
开发工具 git 开发者
|
2月前
|
开发工具 git
|
2天前
|
Shell 开发工具 git
git获取gitee老版本的分支内容
git获取gitee老版本的分支内容
|
13天前
|
开发工具 git 开发者
【专栏】探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序
【4月更文挑战第29天】本文探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序。与 `git merge` 不同,rebase 重写提交历史,提供简洁线性的历史记录。文章介绍了 rebase 的基本操作、应用场景,如整理提交历史、解决冲突和整合分支,并强调了使用注意事项,如避免在公共分支上操作。尽管 rebase 可以带来整洁的历史和冲突解决便利,但其潜在的风险和可能导致的历史混乱需谨慎对待。理解并恰当使用 `git rebase` 可以提升开发效率和代码质量。
|
21天前
|
机器人 Java 测试技术
云效产品使用常见问题之流水线git自定义某一个分支提交节点失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

相关实验场景

更多