1. 主页
  2. 发布
  3. 短网址二维码
  4. Base64编码解码
  5. 移动版blog
Commit message 与 Change log 使用案例
作者:晨曦沐枫|发表时间:2018-8-23 21:58:26 |分类:CSS样式

    我们Git 每次提交代码,都要写 Commit message(提交说明)。

    当我们处于一个大的团队来一起开发一个前端工程或者一个提供基础能力的npm包时,我们在每更新一个版本是需要知道这个版本哪些功能是新增的,有哪些提交是在做 bug fix 的。

    如果大家 message 写的比较混乱这个是对项目管理者或者使用者不太友好的,比如这个新版本有30个是新增功能点,有11个是属于bug fix,这些 Commit message 都混乱的排列在一起很难辨别。

    或者我们在小程序发新版本了,我们需要周知用户或同事,这周版本有哪些变更我们需要列出来。用户也想了解上一个版本发现的某个问题这个版本是否修复。

    针对以上问题我们采用如下方案:


    commit messag 格式

    标准的commit message是包含Header,Body和Footer三个部分。但是一般不会去填写这么多信息。

    作为正常开发的话,只需要使用Header部分即可,Body和Footer部分我们就不做阐述。

    Header的内容主要分为三个部分,包括type,scope和subject。

    type

    type主要是用于说明提交的类型,目前常用的是下面7个。

    feat:新增加的功能(feature),比如组件库中新增一个组件。

    fix:修复bug,最常见的是解决QA提出的bug。

    docs:文档(documentation),比如对项目README文件的修改。

    style: 格式(代码空行,缩进等格式化,不影响代码运行的变动)。

    refactor:重构(即不是新增功能,也不是修改bug的代码变动)。

    test:增加测试,一般用于增加单元测试。

    chore:构建过程或辅助工具的变动,一般是项目版本的变更。

    如果我们提交的类型为feat或者fix,则在生成change log时,会自动的追加到change log中;其他类型则是根据指令选择要不要添加至change log中,建议是不要。

    scope

    scope用于表示此次提交的影响范围,根据项目而定。如果是业务项目的话,一般会是业务模块名;如果是基础库类型的项目,一般会是某个底层基础的内容。

    subject

    subject用于简要描述此次提交的内容,一般不超过50个字符。

    那么一个Header完整内容可以展示如下。

    完整的Header内容


    commitizen

    如果有的时候我们会忘记commit message格式的话,可以通过一个工具来帮助我们实现,这个工具就是commitizen。

    使用的方法也很简单,这里给大家介绍下。

    安装

    通过npm安装commitizen包,如果只需要在当前仓库使用默认安装就可以了,如果需要全局使用则加上-g选项。

    npm install -g commitizen  安装commitizen

    commitizen init cz-conventional-changelog --save --save-exact  初始化配置

    当配置完成后,对于以后需要git commit的地方都采用git cz来代替

    需要注意的一点是如果暂存区里没有修改的文件,直接去运行git cz会报错抛出异常,错误信息显示:没有添加进暂存区的文件。

    如果按照正常的流程,git add后,再去运行git cz,则会出现如下提示选项。

    

    我们一般只需要选择前三项,分别对应Header的style,scope和subject三个部分。

    后面的两个部分不用填写,直接按回车就行了。这时一条完整的Commit Message就生成了。


    Change log

    我们有了规范的 Commit Message 我们就可以根据这个工具生成对应的 Change log 日志了,方便开发者查阅每个版本

    我们可以直接从commit生成Change log。生成的文档包括以下三个部分。

    New features

    Bug fixes

    Breaking changes.

    每个部分都会罗列相关的 commit ,并且有指向这些 commit 的链接。当然,生成的文档允许手动修改,所以发布前,你还可以添加其他内容。

    conventional-changelog就是生成 Change log 的工具。

    npm install -g conventional-changelog-cli  安装生成工具

    conventional-changelog -p angular -i CHANGELOG.md -w  执行此命令发现在项目中多了个CHANGELOG.md文件

    下面就是生成出来的文件了,我们可以看到两个不同的版本号(即package.json中的version)

    


标签: git提交管理 git commit Commit message Change log conventional-changelog-cli 最后修改时间:2018-8-23 22:30:05
晨曦沐枫

魔都漂泊码农一枚,平常热衷于分享探讨一些新技术,喜欢挑战又不忘初心,所以写了这么一个站点和大家分享交流,主要分享还是前端技术为主,也有记录工作经验和生活感悟。

由于个人水平有限,所以博客中的文章难免有错误或者不正确的地方,欢迎在文章下方留言,楼主看到会及时改正。

博客是我利用空闲时间维护的一个小项目,如有异常或者报错(一般异常都hold住了,手动微笑),欢迎留言或者邮件,楼主尽早修正,楼主已推出移动版blog,欢迎使用。

联系邮箱:myco_xmy@qq.com