Git代码与协作管理

代码最早是svn进行管理的,但在快速开发过程中分支管理一直是一个头疼的问题,之前使用的商业代码版本管理软件,分支管理也是非常头疼,以至于最后都不敢建立分支。同时svn在code review上也是无能无力,必须还需要一个专门的code review平台来进行管理,对于小团队来说,有点得不偿失。因此在这样的情况下,我们选择了Git,并使用gitlab进行管理,好处是:
1.代码分支管理非常方便,通过一系列规范,分支管理非常清晰易掌握。
2.code review可以很方便进行,并且还是强制性的进行。代码评审对于项目质量来说非常关键,这方面吃了很多亏。
3.各种消息通知可以很容易进行邮件通知,做到及时性。
注:代码管理参考leancloud.com的管理方法,在此基础上进行小部分修改。

功能驱动(FDD)

目前各种git流程管理都是基于FDD(feature-driven development)功能驱动模型进行开发,意思就是现有需求,基于需求建立功能分支(feature branch)或者问题修复分支(bug-fix branch),开发完毕后合并到主分支后,将功能分支进行删除。
我们的主流程也是基于此模型进行。

分支管理(branch)

前面讲述,我们目前积极推广微服务,将每一个模块作为一个项目来对待,那么一个模块在git里就是一个repo(仓库),那么在一个模块内进行并行开发的机会就很少,降低建立分支的概率。那么长期存在的分支只有两个:master和release分支,master是建立仓库时默认建立的,是开发分支;release分支是发布分支,主要用于build项目和tag管理。
在repo建立时,确定好人员管理分支的权限,正常一个仓库应该有一个master的权限,其他开发同学是developer权限,developer权限用于开发项目,但不能合并feature分支代码进master分支。
开发人员在开发时,首先对于需求根据功能点进行划分,每一个功能点最好控制在3天内开发完毕,然后对每一个功能点编写issue,在issue里对功能点进行说明,方便后面的code review,然后根据issue建立分支,分支名字为:feature-功能点名称-issue编号,从master分支同步代码。开发人员在开发完成代码后,进行单元测试,测试完毕后,和master分支代码同步,然后进行提交,同时在gitlab里进行merge request(常规名字是pull request),请求合并和代码评审,并写明需要参加评审的人员。此时评审人员就会收到需要评审邮件,通过邮件链接直接进去gitlab进行代码审查,代码审查没有问题后,进行合并代码和删除功能分支。
每一个功能点设置在3天,也是为了减低功能点规模,降低代码冲突的风险,同时加快代码评审的速度,把问题控制在早期,正常情况下,在下班前进行pull request,第二天早晨评审人员来了后首先进行代码评审,时间控制在半小时内。

第一步:新建分支

首先根据issue建立新功能分支
git checkout master
git pull
git checkout -b feature-x-issueNO master

第二步:开发代码和提交分支

在代码开发完毕后,可以提交分支:
git add -all
git status
git commit -m "comment"
其中注释要写明此次提交的信息说明,建议格式如下:
简要描述此次提交的内容
第一条修改内容
第二条修改内容
关联的issue编号

第三步:与主干同步

在分支开发完成后,push之前,要与master进行同步
git fetech origin
git rebase -i origin/master
这里最后一步是将多次commit合成一个commit,方便后期管理。在合并过程中,需要将第一个之外的pick改成s。

第四步:推送到远程仓库

合并完代码后,就需要把功能开发分支合并到远程仓库
git push --force origin feature-x-issueNO
git push 命令带上--force命令,是因为rebase可能改变了分支的历史,需要强制推送。

第五步:发出pull request

推送完代码后,在gitlab后就会出现merge request的提示,这时就要进行pull request,写上注释,写明评审人和合并分支。截图如下:

第六步:code review

第五步完成后,评审人就会收到邮件,直接在gitlab进行查看分支合并历史,对代码进行评审,如果评审通过,进行代码合并并删除分支。如果评审不通过,写明原因,退回开发人员。

第七步:生产部署

在代码测试完毕后,先将release分支删除,重新建立release分支,从master分支同步代码。然后根据release分支进行build代码,部署上线成功后,打tag,服务器tag标签为上线日期,比如:2016.03.31,客户端的则根据三段式规则,比如:v3.0.1, v..
bug-fix分支
在上线后,可能出现紧急问题,如果不是阻断性问题,尽量放到下一版本中,如果必须立即修复,那么按照下列步骤进行:
1.如果此问题已经在master分支里解决,那么直接在release分支里cherry-pick master分支的对应的commit,如果没有转到2.
2.建立bug-fix分支,开发完成后发起pull request请求代码评审,评审通过后,代码合并到master分支,将bug-fix分支删除。
在release分支里cherry-pick master分支的对应的commit,部署上线成功后,打tag,如果是服务器,tag为上个版本后面加英文字母,比如,2016.03.31a,如果是客户端,那patch加1。

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

推荐阅读更多精彩内容

  • 多种多样的工作流使得在项目中实施Git时变得难以选择。这份教程提供了一个出发点,调查企业团队最常见的Git工作流。...
    JSErik阅读 4,311评论 2 8
  • 一 结婚三天以后,冯一南开始张罗带柯小艾回老家。 “明天我们坐早上五点半的长途汽车,四个半小时之后到我们镇上,再坐...
    冬妮娅阅读 389评论 0 0
  • 一年高考又结束了。 无意间发现毕业照,发现我的高考过去三年了。 我那年高考的作文题叫青春不朽。我记不得我是怎么完成...
    呓语解忧馆阅读 482评论 0 0
  • 这是应该载入跨界转型史的一夜,这一夜,来自汽车业、投资界、互联网公司的荟友们发生了哪些激情碰撞?激情?别想歪了,其...
    650555878492阅读 338评论 0 1
  • 按二次返回键退出 在onBackPressed 方法中做下时间判断 第二种在onKeyDown 方法中做下判断 e...
    AmeeLove阅读 869评论 0 12