embedded-framework/doc/git/git-commit-standardize.md
2023-09-02 23:11:34 +08:00

3.0 KiB
Raw Blame History

背景

Git每次提交代码都需要写commit message否则就不允许提交。一般来说commit message应该清晰明了说明本次提交的目的具体做了什么操作……但是在日常开发中大家的commit message千奇百怪中英文混合使用、fix bug等各种笼统的message司空见怪这就导致后续代码维护成本特别大有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题我们希望通过某种方式来监控用户的git commit message让规范更好的服务于质量提高大家的研发效率。

规范建设

规范梳理

初期我们在互联网上搜索了大量有关git commit规范的资料但只有Angular规范是目前使用最广的写法比较合理和系统化并且有配套的工具IDEA就有插件支持这种写法。最后综合阿里巴巴高德地图相关部门已有的规范总结出了一套git commit规范。

commit message格式

<type>(scope):<subject>

type (必须)

用于说明git commit的类别只允许使用下面的标识。

feat新功能feature

fix/to修复bug可以是QA发现的BUG也可以是研发自己发现的BUG。

  • fix产生diff并自动修复此问题。适合于一次提交直接修复问题
  • to只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix docs文档documentation

style格式不影响代码运行的变动

refactor重构即不是新增功能也不是修改bug的代码变动

perf优化相关比如提升性能、体验。

test增加测试。

chore构建过程或辅助工具的变动。

revert回滚到上一个版本。

merge代码合并。

sync同步主线或分支的Bug。

scope (可选)

scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

例如在Angular可以是locationbrowsercompilecompilerootScope ngHrefngClickngView等。如果你的修改影响了不止一个scope你可以使用*代替。

subject (必须)

ubject是commit目的的简短描述不超过50个字符。

建议使用中文(感觉中国人用中文描述问题能更清楚一些)。

  • 结尾不加句号或其他标点符号。
  • 根据以上规范git commit message将是如下的格式
fix(DAO):用户查询缺少username属性 
feat(Controller):用户查询接口开发

以上就是我们梳理的git commit规范那么我们这样规范git commit到底有哪些好处呢

  • 便于程序员对提交历史进行追溯,了解发生了什么情况。
  • 一旦约束了commit message意味着我们将慎重的进行每一次提交不能再一股脑的把各种各样的改动都放在一个git commit里面这样一来整个代码改动的历史也将更加清晰。
  • 格式化的commit message才可以用于自动化输出Change log。