Git Commit Message 规范实践

Posted 小羊子说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git Commit Message 规范实践相关的知识,希望对你有一定的参考价值。

文章目录

背景

本文总结了项目实践中的 Commit Message 规范。

任何一笔提交都是有原因的,因此 commit message 需要说明该笔提交的 目的. 我们主要借鉴AngularJS Git Commit Message Conventions
规范commit message想要达到的目的主要有:

  • 提供更多更准确的信息。便于review,更容易发现潜在问题。便于查看历史记录回溯
  • 发布版本的时候可以通过脚本生成changelog
  • 可以对commit message信息进行过滤筛选

commit message 格式说明,都是必填。
(<issue_id>):

其中 Allowed

  • feat (feature)
  • fix (bug fix)
  • docs (documentation)
  • style (formatting, missing semi colons, …)
  • refactor
  • test (when adding missing tests)
  • chore (maintain)
  • ui (UI 微调,不影响功能逻辑)

<issue_id>: JIRA issue id。比如android_INFRA-74
: 目前要求是有内容就行。最好不要超过50个字。
: 空行。用来分隔subject和body, 分隔body 和 test affect。

: 关于change的相关描述。可以多行,可以包含空行。 : 测试影响说明。必须是关键字“测试影响”开头的一段说明。可以多行,可以包含空行。 注意:(): 里面的":"中英文都兼容。

示例

feat(ANDROID_INFRA-90): seperate registration from identity verification

原来的两个接口实现不动,但是标为 Deprecated

  1. /mobile/consignor/register/quick: doRegister()
  2. /mobile/consignor/real-name-authentication: doRealNameCertify()

新增两个接口:

  1. /mobile/consignor/register/quick: doQuickRegister()
  2. /mobile/consignor/identity-auth-request: submitIdentityVerifyRequest()

测试影响: 注册和验证流程

Feature

feat(ANDROID_INFRA-74): 功能简单描述
<空一行>
<功能具体的具体描述>
实现方法(可选):
<具体实现方法的描述>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>
<较大新功能和逻辑性较强的功能需要附带部分测试用例>

Bug

fix(ANDROID_INFRA-74): 简单描述
<空一行>
<关于Bug的一般说明>
产生原因:
<描述Bug的产生原因>
解决方法:
<描述如何修复bug>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Refactor

refactor(ANDROID_INFRA-74): 重构了什么地方的代码
<空一行>
<对重构内容、目的的相关描述>
所做修改:
<说明你做了那些修改>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Docs

docs(ANDROID_INFRA-74): 完善xxx文档
<空一行>
<修改原因>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Test

test(ANDROID_INFRA-74): 增加xxx方法自动测试案例
<空一行>
<测试详情>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Style

style(ANDROID_INFRA-74): check style 修改
<空一行>
<移除了哪些资源和内容>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Chore

chore(ANDROID_INFRA-74): 完善脚本
<空一行>
<简单介绍>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

每个Merge Request只有一个Commit

各位可以多次 commit, 但是在提交 Merge Request 的时候只能有一次 Commit message,具体操作:

git rebase -i upstream/master

<pick第一次commit>

<squash剩下所有的commit>

<把所有的Commit Message按上述格式融合>

<如果有conflict请解决conflict>

git push origin <your_branch> --force

提交merge request

小结

commit 提交时需要注意 一次提交对应一个问题,一来方便 大家对此次的提交 code Review ,二来方便后期定期问题,提交时注意规范使用空行及空格(比如中英文之间添加空格、规范使用【】或者 「 」等,具体可以参考附录5)。

附录

以上是关于Git Commit Message 规范实践的主要内容,如果未能解决你的问题,请参考以下文章

Git Commit Message 规范实践

tortoisegit配置commit message模板,规范说明

Git commit message格式规范(推荐)

优雅的提交你的 Git Commit Message

Git工程实践巧用commit message

我是怎么写 Git Commit message 的?