素材巴巴 > 程序开发 >

git规范与日志规范

程序开发 2023-09-07 19:26:03

因为要分享git规范,所以今天也顺便做一个总结,这个仅限于对git的开发中和部署时的规范和提交时的日志规范做总结。本文章分两个部分总结git规范,一个是从分支讲解在开发

目录

  • git提交规范-commit message
  • 分支构成

    master和develop分支一直存在,且名称不会变化,一般不直接修改这2个分支,由其他分支合并而来。

    feature、release、hotfix分别用于功能点开发、优化,特定版本测试,线上问题紧急处理,同一类型的分支会产生多个。

    分支划分如下:

    • master:与线上版本保持绝对一致;
    • develop:开发分支,由下文提到的release、feature、hotfix分支合并过后的代码;
    • feature:实际功能点开发分支,建议每个功能新建一个feature, 具有关联关系的功能公用一个feature分支;
    • release:每一次开发完成之后,从develop创建出来的分支,以此分支为基准,进行测试;
    • hotfix:该分支主要用于修复线上bug;

    命名规范约定如下:

    • feature分支命名:feature/name
    • release分支命名:release/name
    • hotfix分支命名:hotfix/name

    比如有一个「优化分布式Session」的需求,可在develop分支的基础上创建新分支 feature/optimize_distributed_session进行开发,开发完成后合并到develop分支。

    分支详细介绍和处理流程

    1 永久分支:Master分支与Develop分支
    在这里插入图片描述

    解说: 
     

    主分支,与线上运行的版本始终保持一致,任何时候都不要直接修改master分支。一个版本的release分支、hotfix分支开发完成后,会合并代码到master分支,也就是说master分支主要来源于release分支和hotfix分支。
    开发分支,始终保持最新完成以及bug修复后的代码,新增功能时基于该分支创建feature分支。一个版本的release分支、hotfix分支开发完成后,也会合并到develop分支,另外,一个版本的feature功能开发完成后,也会合并到develop分支。也就是说develop分支来源于feature、release、hotfix分支。

    Feature 分支
    分支名 feature/*
    Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支,但是我们也可以保留
    在这里插入图片描述解说
    开发新功能或优化现有功能时,会创建feature分支,以develop为基础创建。一般会有多个功能同时开发,但上线时间可能不同,在适当的时候将特定的feature分支合并到develop分支,并创建release分支,进入测试状态。

    Release分支

    分支名 release/*

    Release分支基于Develop分支创建,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于开发新的Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)
    发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
    在这里插入图片描述解说:
    当一组feature开发完成,会首先合并到develop分支,开始进入提测阶段时,会创建release分支。以release分支代码为基准提测,测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。测试完成之后,合并release分支到master和develop分支,此时master为最新代码,用作上线。

    维护分支 Hotfix

    分支名 hotfix/*

    hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag
    在这里插入图片描述解说:
    线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。

    特殊情况

    1. develop分支已存在未上线的feature代码, 此时需要紧急上线一个新功能, 但develop的代码不能上,如何处理 ?
      • 以master为基线创建feature, 在完成之后,代码合并到master分支;
      • 为了保证develop是最新代码,需要从master合并到develop分支;
    2. 以develop为基线,创建了f1和f2两个feature分支之后, f1,f2开发一半的时候,发现两个分支代码需要有依赖怎么办 ?
      • 最好在开发开始前确定两个功能是否相关,若相关则只创建一个分支,两个功能在一起开发;
      • 如果已经创建,则需要合并到一个分支;
      注意: 一定要保证commit历史记录的整洁,代码合并时,根据情况选择merge或rebase;使用rebase注意,一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作;

    git提交规范-commit message

    Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。
    使用Angular的Commit message 格式。也有配套的工具(自行选择)
    https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits

    $ git commit -m "hello world"
     

    上面代码的-m参数,就是用来指定 commit mesage 的。
    如果一行不够,可以只执行git commit,就会跳出文本编辑器,让你写多行。
    一般来说,commit message 应该清晰明了,说明本次提交的目的。
    Git上随便打开一个git的源码,比如spring boot的就可以看到那些提交记录

    commit message 格式

    每个commit message 包括header,body和footer,各占一行。其中header由type、scope和subject组成。header必须要写,header的scope是可选的。Body 和 Footer 也以省略。

    (): 
     //空一行
     
     //空一行

    每行不超过100字符也有72个的,原因,为了美观

    Header

    Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。

    Type

    必须为下列之一:
    • feat:新功能(feature)
    • fix:修补bug
    • docs:文档修改
    • style: 不影响代码含义的修改(例如:white-space; 格式化等)
    • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
    • perf: 提升性能的修改
    • test:增加或修改测试
    • chore:构建流程或辅助工具的变动

    Scope

    scope用于说明commit修改的范围,比如数据层、控制层、视图层,route, component, utils, build等等。如果修改影响多处,可使用"*"。

    Subject

    Subject是对修改的简要说明:
    • 使用祈使语气,一般现在时。
    • 首字母小写
    • 句末不要使用句号

    Body

    使用祈使语气,一般现在时。另外,body需要包含修改的原因和与之前版本的区别。

    Footer

    任何Breaking changes的信息或者关闭issue的信息都可写在Footer. Breaking changes需要以 BREAKING CHANGE: 开头。
    如下为我的2条提交记录:

    commit 9fb447d73c637cfa128b57a84d95dc72bb14412b (HEAD -> master)
     Author: zhongjx 
     Date:   Wed Dec 26 18:22:53 2018 +0800refactor(*): 使用prettier格式化代码使用eslint+prettier取代之前的eslint+airbnb规范commit a4a5e9259d5dd4f5f4d3d16fea3392df2a877ee1 (origin/master)
     Author: zhongjx 
     Date:   Tue Nov 20 09:49:27 2018 +0800chore: 添加commit msg格式要求

    Revert
    如果commit用于撤销之前的commit,需以revert:开头,接着写被撤销的commit的header。body里要写:this reverts commit . hash为被撤销的commit的hash值。这种格式也可以由git revert命令自动生成。


    标签:

    上一篇: 路由守卫时死循环 下一篇:
    素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。