前端开发-Gitflow简易版

Simple Gitflow

业务越来越复杂,分支也越来越多,为提高效率和规避流程错误,商定一个统一的工作流程是至关重要的。

先上图~

gitflow-simple.png

分支

Master

  • 它是一个长期分支,存在于整个项目周期。

  • master分支上不允许任何代码提交,只能由负责人进行分支合并。

  • 该分支存放的应该是随时可供在生产环境中部署的代码。

Feature

  • 临时分支,用于开发新功能,不同业务可创建多个feature分支。
  • master分支创建,开发测试完成,合并至release分支后删除。

Release

  • 临时分支,用于预发布或回归测试。
  • master分支创建,发布后打tag合并至master后删除。
  • 命名建议:release/1.x.x

Hotfix

  • 临时分支,用于修复线上问题。
  • master分支创建,发布后打tag合并至master后删除。
  • 命名建议:hotfix/bugName

为什么没有develop分支?

develop分支的职责已经分配到了featurehotfix分支,这样临时分支的修改也不用同步到两个分支(develop和master),为避免混淆,所以移除了develop分支。

场景1:多个feature并行开发

假设5月收到需求,我们要做群密聊,计划6月上线,并且在群密聊上线前,有个0528优化版本要上。

好了,场景有了,来看看具体流程怎么操作。

  1. 创建feature分支

master分支分别创建feature/groupSChat、feature/me0528,命名最好贴合业务。

git checkout master
git branch feature/groupSChat
git branch feature/me0528

分支建好后,就进入开发和测试阶段;在经历N次提交和测试后准备上线。

  1. 创建release分支

假设5月份版本是5.5.5 ,从master分支创建release/5.5.5分支,然后合并feature/me0528分支。

// 从master分支创建release/5.5.5分支并切换到该分支
git checkout master
git checkout -b release/5.5.5
git merge feature/me0528
git branch -d feature/me0528
  1. 打包上线-5.5.5版本

release/5.5.5分支进行最终测试后上线,我们打上tag并合并到master,然后删除release/5.5.5分支。

git checkout master
git merge release/5.5.5
git tag v5.5.5
git branch -d release/5.5.5

注意,到现在虽然5.5.5版本上线了,隔壁分支feature/groupSChat还在紧张开发中,但它丝毫没有受到影响。

  1. 群密聊feature,在经过N次提交和测试后,准备上线

假设群密聊版本是6.0.0,master分支创建release/6.0.0分支,然后合并feature/groupSChat分支。

git checkout master
git checkout -b release/6.0.0
git merge feature/groupSChat
git branch -d feature/groupSChat
  1. 打包上线-6.0.0版本

release/6.0.0分支进行最终测试后上线,我们打上tag并合并到master,然后删除release/6.0.0分支。

git checkout master
git merge release/6.0.0
git tag v6.0.0
git branch -d release/6.0.0

到这里,我们并行开发的两个feature都上线了;开发过程中我们创建的feature、release等分支,也随发版后删除了,仓库里只是多了两个tag标签。

场景2:紧急修复线上bug

假设在场景1中,刚开始做feature/me0528和feature/groupSChat功能不久,就发现线上版本有严重问题,领导要求马上修复后上线。这时你可能会想,我已经有两个分支在开发了,该咋办呢?别担心,你还有master分支,它存放着可供在生产环境中部署的代码。

  1. 创建hotfix分支

假设这个严重问题是导致通讯录用不了,contact not work ?

git checkout master
git branch hotfix/contactNotWork
  1. 打包上线-5.5.1版本
git checkout master
git merge hotfix/contactNotWork
git tag v5.5.1
git branch -d hotfix/contactNotWork
  • 首先,这里假设线上版本为5.5.0,bug修复后发版为5.5.1
  • 与feature分支不同的是,hotfix分支的代码基于稳定的功能,测试完毕后不需要通过release分支即可发布上线。

小结

  • 除了master分支,其它都是临时分支,仓库中只有master分支和正在开发的feature分支,便于维护。
  • 临时分支都是从master分支创建的
  • feature分支通过测试后才创建并合并到release分支。
  • 通过创建release分支,能有效避免丢失已上线的功能或bug修复代码。
  • 场景中分支合并示例使用的git merge,当然你也可以用git rebase,关于二者的区别可参考文末链接。

Thanks

关于本文的由来,首先要感谢 骐彰同学提供的思路,和现有团队的支持,才促使我整理了这篇文章,感谢。

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

推荐阅读更多精彩内容

  • Git分支管理 master:主分支,当前分支上的代码随时可以直接发布,并且只能通过Pull Request从其他...
    UEUEO阅读 9,647评论 5 33
  • 原文推荐: A successful Git branching model 这个文章讲的是Git分支模型的原理及...
    SonyaBaby阅读 1,500评论 0 0
  • Git 仓库申请流程 1. 开发主管向Git 管理员提交Git 仓库申请【邮件:发送给Git 管理员,抄送给项目经...
    骚包霸天虎阅读 2,075评论 0 0
  • 忽然觉得有些事情并不如我想象的那样发生,并没有当初我想的那么美好了。比如爱情,比如友情,比如亲情。 我觉得,只要两...
    绳命是入刺的井猜阅读 132评论 0 0
  • 话说已经好久没来九龙谷了,上次过来的时候,那是一个阴雨天,记忆深刻的是当时暴雨倾盆,我和儿子快速的像豹子一样,在深...
    丹尼尔李S阅读 324评论 0 3