文章目录
背景
任何一笔提交都是有原因的,因此 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。
示例
feat(ANDROID_INFRA-90): seperate registration from identity verification
原来的两个接口实现不动,但是标为 Deprecated
- /mobile/consignor/register/quick: doRegister()
- /mobile/consignor/real-name-authentication: doRealNameCertify()
新增两个接口:
- /mobile/consignor/register/quick: doQuickRegister()
- /mobile/consignor/identity-auth-request: submitIdentityVerifyRequest()
测试影响: 注册和验证流程
Feature
Bug
Refactor
Docs
Test
Style
Chore
每个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)。
附录
- 1. Git 提交的正确姿势:Commit message 编写指南
- 2. 写出 angularjs 风格的源代码提交历史
- 3. Commit Message 和 Change Log 编写指南
- 4. AngularJS Git Commit Message Conventions
- 5 .中文文案排版指北 – 中英混杂,标点符号规范