Git commit message 和工作流规范

作者:程柳锋

目的

  • 统一团队 Git commit 日志标准,便于后续代码 review ,版本发布以及日志自动化生成等等。
  • 统一团队的Git工作流,包括分支使用、tag 规范、issue 等。

Git commit日志参考案例

总体方案

Git commit日志基本规范

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

对格式的说明如下:

  • type代表某次提交的类型,比如是修复一个bug还是增加一个新的feature。所有的type类型如下:
  • feat: 新增feature
  • fix: 修复bug
  • docs: 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
  • style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
  • refactor: 代码重构,没有加新功能或者修复bug
  • perf: 优化相关,比如提升性能、体验
  • test: 测试用例,包括单元测试、集成测试等
  • chore: 改变构建流程、或者增加依赖库、工具等
  • revert: 回滚到上一个版本

格式要求:

# 标题行:50个字符以内,描述主要变更内容
#
# 主体内容:更详细的说明文本,建议72个字符以内。 需要描述的信息包括:
#
# * 为什么这个变更是必须的? 它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等
# * 他如何解决这个问题? 具体描述解决问题的步骤
# * 是否存在副作用、风险? 
#
# 尾部:如果需要的化可以添加一个链接到issue地址或者其它文档,或者关闭某个issue。

Git分支与版本发布规范

  • 基本原则:master为保护分支,不直接在master上进行代码修改和提交。
  • 开发日常需求或者项目时,从master分支上checkout一个feature分支进行开发或者bugfix分支进行bug修复,功能测试完毕并且项目发布上线后,将feature分支合并到主干master,并且打Tag发布,最后删除开发分支。分支命名规范:
    • 分支版本命名规则:分支类型 分支发布时间 分支功能。比如:feature_20170401_fairy_flower
    • 分支类型包括:feature、 bugfix、refactor三种类型,即新功能开发、bug修复和代码重构
    • 时间使用年月日进行命名,不足2位补0
    • 分支功能命名使用snake case命名法,即下划线命名。
  • Tag包括3位版本,前缀使用v。比如v1.2.31。Tag命名规范:
    • 新功能开发使用第2位版本号,bug修复使用第3位版本号
    • 核心基础库或者Node中间价可以在大版本发布请使用灰度版本号,在版本后面加上后缀,用中划线分隔。alpha或者belta后面加上次数,即第几次alpha:
      • v2.0.0-alpha-1
      • v2.0.0-belta-1
  • 版本正式发布前需要生成changelog文档,然后再发布上线。

如何接入?

接入参考commit-message-test-project项目。具体步骤如下:

  • 第一步:在工程跟目录下的package.json文件加入如下代码所示的scripts和dependencies内容,版本号为3位版本号。
  {
    "name": "application-name",
    "version": "0.1.0",
    "scripts": {
      "commitmsg": "validate-commit-msg",
      "commit": "git-cz ",
      "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
    },
    "devDependencies": {
      "commitizen": "^2.3.0",
      "validate-commit-msg": "^2.11.1",
      "conventional-changelog-cli": "^1.2.0",
      "husky": "^0.13.1"
    }
  }
  • 第二步:在工程根目录新建.vcmrc文件,并且文件内容为
{
  "helpMessage": "\nPlease fix your commit message (and consider using https://www.npmjs.com/package/commitizen)\n",
  "types": [
    "feat",
    "fix",
    "docs",
    "style",
    "refactor",
    "perf",
    "test",
    "chore",
    "revert"
  ],
  "warnOnFail": false,
  "autoFix": false
}

接入后的Git commit操作流程

  • 第一步:创建一个feature分支或者bugfix分支 $ git checkout -b feature_infinite_load # 切换到一个feature分支或者bug fix分支
  • 第二步:将代码提交到本地Git仓库,并填写符合要求的Commit message格式 $ git add . $ git commit # 此处不要加任何参数,比如-m 如下图所示:
  • 第三步:将代码同步到远程Git仓库$ git push origin feature_infinite_load # 将修改发布到远程仓库
  • 第四步:自动生成changelog,并打Tag发布$ tnpm run changelog # 使用npm script中的changlog命令直接从git元数据生成日志。 $ git tag v0.1.0 $ git push origin v0.1.0

原文链接:http://ivweb.io/topic/58ba702bdb35a9135d42f83d

相关推荐

使用git自动部署简单网站

如何写好 Git commit messages

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Web 开发

Mac下面的IE8测试环境

微软提供的IE测试虚拟机里面,Window7的自带的最小版本IE是IE8,so,从IE8测试走起。Vista是个短命的产品,至于XP,让他退役吧。

920
来自专栏JackieZheng

利用Solr服务建立的站内搜索雏形---solr1

最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀。总觉着之前搭建的nutch配上solr还是有点呆板,在nutc...

2338
来自专栏云计算教程系列

如何使用Git版本控制系统

Git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。git最初只是作为一个可以被...

532
来自专栏linux驱动个人学习

高通调试 SPI 屏的 bug

1882
来自专栏java达人

TortoiseSVN中Branching和Merging实践

使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响...

1935
来自专栏腾讯Bugly的专栏

Android 开发必备知识:我和 Gradle 有个约会

0、讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太...

3424
来自专栏张善友的专栏

SmartGit:Git版本控制系统的图形化客户端程序

Git最初是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。后来Git内核已经成熟到可以独立地用作版本控制。很多有...

1945
来自专栏腾讯移动品质中心TMQ的专栏

svn迁移至git指南

将代码从SVN迁移至Git时,若不关注SVN的历史提交记录,则直接将一份源代码提交至远端Git仓库即可;但对于大多数项目,历史提交则是对团队比较宝贵的记录,若要...

832
来自专栏coding

django2实战1.初识django什么是django环境安装创建第一个项目启动开发服务器项目配置文件小结

以建房子为比喻,如果每个建筑工都以自己的想法去建,而且要负责所有的流程,包括打地基,建柱子,垒砖头等。这种造出来的房子肯定是又丑又不坚固。如果这个房子的地基已经...

931
来自专栏腾讯DevOps

SVN切换到Git方法及坑点

SVN和Git同样都是在特定时代下比较优秀的版本控制系统,但是随着时代的发展,SVN越来越不能满足多人开发的需求,尤其是在多种多样,天马星空的业务场景面前,SV...

1965

扫码关注云+社区