git分⽀与提交规范
⼀、分⽀管理
分类
1.常设分⽀master和develop ,此些分⽀不允许有任何的代码提交,修改只能是从relea,hotfix,develop的
分⽀进⾏Pull Request合并(下⾯简称PR)
2.临时分⽀ 分为relea发布,feature功能,hotfix热修复分⽀
版本分⽀的维护由项⽬后端负责⼈负责切换和merge整合
注意:
个⼈分⽀不做限制(例:以前代码要重构或者修复bug,新功能⼜要开发,可以⾃⾏切分⽀,记得合并就好)
develop和master分⽀的PR由项⽬负责⼈负责规范(实操在gitee上)
git ur.name 建议要求改成中⽂名称(命令如下 git config --global ur.name “⾃⼰的中⽂名字”)
介绍
Production 分⽀(⽣产分⽀)
也就是我们经常使⽤的master分⽀,这个分⽀是最近发布到⽣产环境的代码。并且master分⽀不允许⼜任何提交记录。
仅接受来⾃功能分⽀(feature/fix)的 PR 或 热修复分⽀(hotfixe)的 cherry-pick(下⽂简称为 CP)
每个合到master分⽀上的提交都要加Tag
Develop 分⽀(开发分⽀)
develop 分⽀⽤于⽇常开发,作为功能的聚合分⽀,存放最新的开发版本。并且 develop 分⽀也不允许有任何提交记录。仅接受来⾃功能分⽀(feature/fix)的 PR 或 热修复分⽀(hotfixe)的 cherry-pick(下⽂简称为 CP)同master分⽀
Feature 分⽀(功能/模块/任务分⽀)
feature/fix 分⽀是从 develop 分⽀中 checkout 出来的新分⽀,每个产品需求或测试的 BUG 对应⼀个 feature/fix 分⽀。⼀旦开发完成并且在本开发周期内要上线,将被要求向 develop 分⽀提交 PR,待 Review 通过后允许合⼊;
(强制,已推⼴公司)命名为 feature-xxx/fix-xxx 关联相关产品需求或 BUG(xxx 为 Gitee 任务编号)。
图2.1
Relea分⽀(发布/预测分⽀)
relea 分⽀是每个开发周期初(如每周⼀)从 master 分⽀ checkout 出来的新分⽀,且 relea 分⽀会⾃动构建测试版本,开发完成并且在本开发周期内要上线的 feature/fix 分⽀内的所有提交被允许 CP 到该分⽀就⾏测试;
全部 测试通过后由项⽬负责⼈向 master 分⽀提交 PR 合⼊完成上线;(建议)命名为 relea-xx 关联开发周期(xx 可以 为本年度第 xx 周)。
Ho给自己的安慰
tfix分⽀
hotfix 分⽀是从 master 分⽀ checkout 出来⽤于修复线上发现的严重 BUG;BUG 修复完成后将被要求向 master 分⽀提交 PR,待 Review 通过后由项⽬负责⼈合⼊,并同时要求向 develop 分⽀ CP 本次修复的所有提交;
(建议)命名为 hotfix-xxx 关联相关 BUG(xxx 可以为 Gitee 任务编号)。
注意:这个分⽀只允许处理紧急bug,测试或者对接过程中的bug修复,应个⼈对应的开发拉取develop分⽀,然后再个⼈开发分⽀上进⾏
分⽀粒度
分⽀粒度分为两个维度:版本 、个⼈
分⽀粒度以个⼈为最⼩粒度(涵盖开发,bug修复,测试分⽀等)
注释:个⼈粒度下,每⽇提交需要详细到以下
以⼀个⼩功能、⼩改进或⼀个 bug fix 为单今年世界杯
位
对应的 unit test 程序在同⼀个 commit
⽆相关的修改不在同⼀个 commit
语法错误的半成品程序不能 commit
少量的⽆归属修改可以酌情合并commit(commit --amend命令)
严禁⼀个任务分⽀feature-xxx开发多个功能
严禁⼀个提交设计多个不相关功能,任务,模块等
⼆、提交管理(个⼈泰拳教学
分⽀commit)
粒度区分完毕再以做的事情来作为命名此次commit提交幼儿园教师述职报告
,见第2点
优点:有助于同事的code review,个⼈版本的回退等,规范化也使得提交赏⼼悦⽬
2.粒度区分完毕后,commit的信息规范如下(推荐插件G耳廓上长痣代表什么
it Commit Template)
feat:新功能/模块(feature)
fix:修补bug
docs:⽂档(documentation)
style:不影响程序逻辑的代码修改(梦想x计划
修改空⽩字符,格式缩进,补全缺失的分号等,没有改变代码逻辑) refactor:重构代码(既没有新增功能,也没有修复 bug)
perf:代码性能提升(个⼈建议合到refactor分⽀,因为性能提升往往伴随着重构)
test:新增测试⽤例或是更新现有测试
chore:构建过程或辅助⼯具的变动(pom新增依赖,逆向⼯程等)
revert:回滚某个更早之前的提交
3.插件使⽤
commit消息包含三个部分,header(必需),body(可选)和footer(可选)见图2.2
图2.2
作者建议写header就好,header所包含的三个⼦部分,就⾜以涵盖提交要素 见图2.3
图2.3(红⾊为必写)
图2.4:⽣成的commit消息
三、Pull Request和Code Review
PR发⽣在develop和master分⽀上,由项⽬负责⼈进⾏审核
Code Review,⼩伙伴们可以fetch命令下载所有远程分⽀的代码,或者PR的时候也可以
⽬的
项⽬早期发现bug
帮助初级程序员学习
避免开发⼈员犯⼀些很常见,很普通的错误
保证项⽬组⼈员的良好沟通
项⽬或产品的代吃什么补头发
码更容易维护
直观改善
强制性要求开发⼈员代码规范,可读性,稳定性,维护性提⾼,流⽔化代码产出,提⾼效率。
规范
未完成
(该部分主要分为前端和后端的代码规范,PR和CR⼀般多注重代码规范⽽不是功能测试,作者是后端开发,后续跟同事合作编写完成会跟⼤家分享)
四、Reba 和Cherry-Pick
这⼀部分当时想写来着,不过都是简单的命令使⽤,还有stash等提升开发效率的命令,⼤家实际⼯作中多使⽤就会了解了,这⾥就不赘述了,当天直播中也由实操过,希望⼤家能真实场景使⽤起来。尤其是reba命令。
五、写在最后
规范只是⼀种约定,⼩伙伴们如果对这份⽂档有疑问,有意见或者建议都可以跟博主联系