在上篇文章中,我提到了Git的基本概念和一些本人实际项目中的总结。然而,最近读了Vincent Driessen写的一篇文章,以为他总结的太好了,站在他肩膀上忍不住将本身的理解分享出来。Vincent Driessen的文章链接放在本文最下方,有须要的童鞋可去参考一二。git
话很少上,干货顶上。post
上述这张图即是一张完整的分支模型。乍看上去,彷佛有点复杂,其实理解后很是简单,而且十分经典。若是你所在项目代码管理较为混乱,我相信,该模型会对你有所帮助。测试
对于完整的项目来说,有两个主要分支,它们的生命周期与项目等同,即一直会存在:spa
master:我相信,每一个git用户都很是熟悉该分支,没错,这是建立项目时的默认分支。对于该模型,咱们认为master分支上任何一个点,都是一个稳定的版本,能够直接部署至产线环境。3d
develop:这是master的平行分支,也是项目中持续开发的分支。该分支的HEAD始终反应着下一个版本的最新修改。全部的feature分支代码都往这里合入。一般,自动化测试环境都由该分支构建。code
当develop分支合入了全部需求分支的代码(下个发布版本所需的功能)而且稳定时,将develop代码合入到master分支,并打上版本tag(方便之后版本回溯)。blog
实际项目中,咱们通常不直接从develop分支将代码合入至master分支,而是从develop拉出release分支,从release分支合入master分支。详情往下观看。生命周期
除了master和develop分支,开发模型中还须要其余分支来协同开发,其生命周期各不相同,但最终都会被删除。事件
当开发团队接到一个新的需求,从develop分支拉出一个feature分支,该功能相关代码均在该分支开发。图片
当该分支开发完毕,将分支代码合入develop分支;
远端删除该feature分支,固然开发本地可保留该分支一段时间,防止出现乌龙事件。
本地建立一个feature分支:
#从本地develop分支拉出feature1分支 git checkout -b feature1 develop #从远端develop分支拉出feature1分支 git checkout -b feature1 origin/develop
将本地分支上传到远端:
#将本地新建feature1分支上传到远端,并在远端命名为feature1
git push origin feature1:feature1
#将本地新建feature1分支上传到远端,并在远端命名为feature2
git push origin feature1:feature2
查询分支
#查询本地分支 git branch #查询远端分支 git branch -r #查询全部分支 git branch -a
本地切换分支
#切换到develop分支
git checkout develop
本地删除分支
#删除本地分支feature1 git branch -d feature1 #强制删除本地分支feature1 git branch -D feature1 #删除远程分支feature1 git push origin :feature1
当develop分支达到一个稳定点,从develop分支从拉出release分支,将其打包并部署到环境中,进行系统测试。
若是测试过程当中,出现bug,在release分支进行bug修复,而后出包再次测试;
该bug确认修复后,将代码合入develop分支;
全部测试经过后,将代码合入master分支,并在master分支打tag(通常对应版本号)。
本地分支打tag
#切换master分支 git checkout master #本地分支打tag git tag -a 2.0.0 -m 'comments' #本地tag上传至远端 git push --tags
本地删除tag
#本地删除tag 2.0.0 git tag -d 2.0.0 #删除远端tag 2.0.0 git push origin :refs/tags/2.0.0
当发布完成后,咱们能够将远端的release分支删除,固然能够保留本地release分支一段时间,防止乌龙事件。
当已发布的版本,在运行一段时间后,因为偶然等因素形成bug,需紧急修复,此时从master分支拉出hotfix分支进行bug修复。
当bug修复完成后,将代码分别合入develop分支和master分支。
合入master分支后,在master打上新的tag(通常是小版本号)。
新版本上线后,远端hotfix分支能够删除,本地hotfix分支能够保留一段时间,防止乌龙事件。
上述内容看完,再回过头来看最初的分支模型,是否以为so easy呢~
再次感谢vincent Driessen,本文多处图片均是参考该篇blog而绘制:A successful Git branching model
做者:吴家二少
博客地址:https://www.cnblogs.com/cloudman-open/
本文欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接