Git 代码提交规范

为什么要规范提交代码

无规矩不成方圆,编程也一样,提交代码也一样。

Git是现在市面上最流行的版本控制工具,团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目就被糟践了。不管是开发还是日后维护,都将是灾难。书

写良好的commit message能大大提高代码维护的效率。但是在日常开发中由于缺少对于commit message的约束,导致填写内容随意、质量参差不齐,可读性低亦难以维护。

在项目中引入commit message规范已是迫在眉睫。

用什么规范

Angular JS 规范

格式如下
1
2
3
4
5
6
7
8
9
10
<type>(<scope>): <subject> //消息头 # 50个字符以内,描述主要变更内容
<BLANK LINE> //空行
<body> //正文
# 主体内容:更详细的说明文本,建议72个字符以内。 需要描述的信息包括:
#
# * 为什么这个变更是必须的? 它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等
# * 他如何解决这个问题? 具体描述解决问题的步骤
# * 是否存在副作用、风险
<BLANK LINE> //空行
<footer> //消息尾 #如果需要的化可以添加一个链接到issue地址或者其它文档,或者关闭某个issue。

为了兼容多种工具方便阅读git message,禁止每一行超过100个字符!

一条commit message包含了header、body和footer,它们之间用空行分隔。

消息头的格式指定为提交类型(type)、作用域(scope,可选)和主题(subject)

type 提交类型
  1. build:对构建系统或者外部依赖项进行了修改。
  2. ci:对CI配置文件或脚本进行了修改。
  3. docs:对文档进行了修改。
  4. feat:增加新的特征。
  5. fix:修复bug
  6. pref:提高性能的代码更改。
  7. refactor:既不是修复bug也不是添加特征的代码重构。
  8. style:不影响代码含义的修改,比如空格、格式化、缺失的分号等。
  9. test:增加确实的测试或者矫正已存在的测试。
作用域

scope 是表明改动的区域,用于说明 commit 影响的范围,可以按项目模块或者功能,框架分层(数据层、控制层、视图层)。

主题

scope 是commit 目的的简短描述。

正文

body  部分是对本次 commit 的详细描述,可以分成多行。

消息尾

footer 部分主要用于两种情况。

  1. 不兼容变动
  2. 关闭 Issue

如果当前代码与上一个版本不兼容,则 footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。

如果当前 commit 针对某个issue,那么可以在 footer 部分关闭这个 issue 。

回滚

如果当前提交回滚了上一次的提交,它的头部应该以revert:开头,紧接着是被回滚的提交记录的头部。body应该描述成This reverts commit <hash>.,hash是被回滚的提交记录的SHA值。

1
2
3
4
5
6
revert:<type>(<scope>): <subject>
<BLANK LINE>
This reverts commit hash
<other-body>
<BLANK LINE>
<footer>

按规范提交代码的好处

  1. 提供更多的历史信息,方便快速浏览。
  2. 可以过滤某些commit(比如文档改动),便于快速查找信息。
  3. 可以直接从commit生成Change log。

Git 代码提交规范
http://www.wangxiaohuan.com/2017/03/07/2017-03-07/
作者
吃素的左撇子
发布于
2017年3月7日
许可协议