本人半强迫症患者一枚,看到各类提交
fix bug xxx
,甚至连xxx
都没有,在回溯问题的时候一头雾水,只能逐个文件找问题。难。。。react
因此我的认为Git Message成为回溯问题的一个迅速肯定问题的关键。git
那什么样的Message是优秀的呢? 原则又是什么呢?就拿咱们一直团队实践的准则来讲一说。github
项目代码稳定以后,每次提交都要考虑提交的粒度问题,尽可能作到 baby step
express
能够根据当前代码模块状况处理。bash
git commit
上增长 -m <msg>
或 --message=<msg>
参数,而单独写提交信息不推荐ide
git commit -m "Fix login bug"
复制代码
推荐工具
angular的GitHub的Commitui
Fix(filterFilter): fix filtering using an object expression when the …
…filter value is undefined
Fixes #10419
Closes #10424
复制代码
Commit Message 分三个部分, header, body, footer. 其中,header 是必需的,body 和 footer 能够省略。 无论是哪个部分,任何一行都不得超过100个字符,以避免影响阅读性。this
[<team>]<type>(<scope>): <subject>
<body>
<footer> 
复制代码
[FE]Fix(card): fix card edit, support to unuse item
在card修改里面,添加配置item未使用功能
复制代码
Header部分只有一行,包括四个字段:type(必需)、scope(可选)、team(可选)和subject(必需)。spa
用于说明 commit 的类别,只容许使用下面7个标识。
Add:新加功能
Fix:修补bug
Modify:移除无用代码
Remove:移除第三方模块或者移除文件
Update:更新第三方模块
Style: 格式(不影响代码运行的变更)
Chore:构建过程或辅助工具的变更
复制代码
scope用于说明 commit 影响的范围,好比数据层、控制层、视图层等等,视项目不一样而不一样。
例如在shrezone,能够是file, card, image, short_video等。
若是你的修改影响了不止一个scope,你可使用*代替。
当不一样的team一块儿编写代码的时候,带team以区分工做区域
subject是 commit 目的的简短描述,不超过50个字符。
其余注意事项:
以动词开头,使用第一人称如今时,好比change,而不是changed或changes
第一个字母小写
结尾不加句号(.)
复制代码
Body 部分是对本次 commit 的详细描述,能够分红多行。
好比react的提交
Sync out another jsx transform test.
We added this test internally and it never got added here. We haven't broken it with any transforms *yet* but it's still good to actually run all of our tests
here too.
复制代码
注意点:
使用第一人称如今时,好比使用change而不是changed或changes。
要和header之间有一个空行
应该说明代码变更的动机,以及与之前行为的对比。
复制代码
Footer 部分只用于如下两种状况:
若是当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变更的描述、以及变更理由和迁移方法。
若是当前 commit 针对某个issue,那么能够在 Footer 部分关闭这个 issue 。
一种特殊状况,若是当前 commit 用于撤销之前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header。
revert: feat(pencil): add ‘graphiteWidth‘ option
This reverts commit 667ecc1654a317a13331b17617d973392f415f02
复制代码
固然在不少时候,也不能每次都按照规范来写Commit Message,可是最起码每次重要的提交都能写,关键时候有用。
固然有人会用打tag的方式来代表重要节点,可是毕竟物尽其用,个有所长。
若是爱好使用工具的朋友也能够自行研究: