SourceTree使用(I)

分支的分类

分支合入、提交、检出关系图

master 分支:

  • 用于部署生产环境的分支,要确保master分支稳定性;
  • 一般由developrelease 以及hotfix分支合并,任何时间都不能直接修改代码;

develop 开发分支:

  • 开发分支,始终保持最新完成以及bug修复后的代码;
  • 一般开发的新功能时,feature 分支都是基于 develop 分支下创建的;

feature 功能分支:

  • 开发新功能时,以develop 为基础创建 feature 分支
  • 分支命名: feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module;

release 发布分支:

  • 发布分支为预上线分支,发布提测阶段;
      当有一组feature开发完成,首先会合并到develop分支,进入提测时,会创建release分支。如果测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。
      当测试完成之后,合并release分支到masterdevelop分支,此时master为最新代码,用作上线。

hotfix 补丁分支:

  • 分支命名: hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似;
  • 线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支;

version1.0 版本标签分支:

  Branch是GitFolw的核心。主要分为两大类 Main Branchs 和 Supporting branches, 其中 Main Branchs 中又包含了 Master 和 Develop,而 Supporting branches 中包含了 Feature 、Release、Hotfix 以及其他自定义分支。



Master
描述:
  master分支上存放的是最稳定的正式版的代码,并且该分支的代码应该是随时可在开发环境中使用的代码(Production Ready state)。当一个版本开发完毕后,产生了一份新的稳定的可供发布的代码时,master分支上的代码要被更新,同时,每一次更新,都需要在master上打上对应的版本号(tag)。

生成及销毁:
  任何人不允许在master上进行代码的直接提交,只接受合入,Master上的代码必须是要从经过多轮测试且已经发布一段时间(根据DAU以及项目实际情况来定,个人建议K歌国际版可以定为一周)且线上已经稳定的 release 分支合并进去,然后在Master 上生成tag(通常就是对应的版本号)


Develop

描述:
  develop分支是保存当前最新版本开发成果的分支。该分支上的代码允许有BUG,但是必须保证编译通过,且该分支可以作为每天夜间测试的分支(如果有夜间测试的话)所以该分支也叫做Nightly build。当develop分支上的代码已实现了软件需求说明书中所有的功能(必须经过开发自测,但是不必经过QA)且相对稳定时候,就可以基于此分支来拉出新的release分支交付QA进行测试。

生成及销毁:
  Develop分支是由一个人(通常是Team Leader)从Master中拉出,任何人不得在Develop上进行代码提交,只接受合入。Develop上所有代码一定都是由 Supporting branches 中的Branch合并进来,且合入Develop的分支必须保证功能完整,可以独立运行,可允许包含一些BUG(但是最好经过自测,不要有太大或者太明显的BUG,比如一启动就crash之类的)。

Develop分支提交图


Feature

描述:
  Feature分支通常叫做功能分支,也可以叫做个人分支,一般命名为 feature/XXXX,该分支就是每一个开发人员进行开发的分支,比如做一些功能、需求之类的东西,这个分支上的代码变更最终合并回develop分支或者干脆被抛弃掉(例如实验性且效果不好的代码变更)。一般而言,feature分支代码可以保存在开发者自己的代码库中而不强制提交到主代码库里。

生成及销毁:
  每个开发者从通常会Develop分支中拉取自己的feature,且开发者可以随意的在自己的feature上进行操作 包括但不限于 提交、回滚、删除。如果最终需要合并入develop那就要保证功能的完整性以及代码的稳定新,比如我在feature上做了3个需求但是由于时间关系我只做了两个,那也可以将feature合并入develop,然后剩下的那一个需求等有时间了再去feature上做完之后再合入develop。所以这里说的功能的完整性并不是值得要做完所有的功能,而是要保证你所要做的所有需求中的某一个或者某几个功能已经做完,不允许把做到一半的功合并入develop。合并入develop尽量上删除远端的feature分支,本地的feature可以视情况而取舍。

Feature 和 Develop关系图


Release

描述:
  Release分支通常叫做发布分支,也可以叫做测试-发布分支,一般命名为 Release/1.2.3(后面是版本号),该分支是为测试-发布新的产品版本而开辟的。因为包含测试流程,所以在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。注意:该分支上的代码一定是可编译可运行的,允许包含小BUG

生成及销毁:
  当develop分支上的代码已经包含了该版本所有即将发布的功能和需求,并且已通过自测且已基本稳定,我们就可以考虑准备基于develop拉取release分支了。而所有在当前即将发布的版本之外的业务需求一定要确保不能混到release分支之内(避免由此引入一些不可控的系统缺陷)。成功的派生了release分支之后,develop分支就可以为“下一个版本”服务了。所谓的“下一个版本”是在当前即将发布的版本之后发布的版本。开发人员可以在此分支上修改BUG,进行提交、回滚等操作,但是与feature不同的是release分支是被多人操作的,不像feature,所以一定要小心避免冲突。当现在QA测试没有问题,便从release上发布上线,且经过一段时间的验证没有问题后合入master,并且删除release分支,其实根据release分支的特性我们可以使用Git Hook触发软件自动测试以及生产环境代码的自动更新工作。这些自动化操作将有利于减少新代码发布之后的一些事务性工作。


Hotfix

描述:
  Hotfix叫热修复分支,除了是计划外创建的以外,hotfix分支与release分支十分相似,当已经发布的版本(Master上代码)遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的tag版本拉取hotfix分支来组织代码的紧急修复工作。这样做的显而易见的好处是不会打断正在进行的develop分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行、独立的开展工作。

生成及销毁:
  由Master上拉取,进行修复,负责修改BUG的同事可以进行提交及其它操作,后续的热修复测试也在此分支上进行。通过测试验证没问题后有一个人(通常为teamleader)合并入Master分支,且同时也要合并入Develop分支。

Hotfix 分支关系图





参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352