# Git 提交规范 ## 前言 当一个团队在协作开发时,针对 **git commit** 规范是十分必须的,每一次提交都务必带上说明信息,同时说明信息亦要有格式规范,即团队要有良好的约定。目的是制定统一的标准,使得提交历史信息条理清晰,更是为了项目有条不紊地迭代以及提高开发者的效率。 由于历史原因,前后端项目开发之前并没有约定提交规范,甚至有些历史提交的提交信息根本没有写清楚修改内容、只写了毫无意义的随机字母,这些提交信息给阅读项目代码迭代带来了很大的困难。由此可见,统一的提交规范必须严格要求。 ## 规范 ### 基本原则 - 准确、扼要概括当前提交的修改做了什么工作 - 多个修改内容,需要用数字序号列出 - 严禁无意义的字符或模糊描述一笔带过修改内容,如果确实是细微的改动,也要清楚描述,例如:“代码格式化”,“fix typo”,“fix minor bug” ### 提交格式 ``` : // 空一行 <body> ``` 其中,type 和 title 是必须的。 type 参考本节[提交类别](#commit-type)部分。 title 是简要概括提交所修改的内容。 body 是详细描述提交内容,多个修改点可以用数字序号依次列出。body 的内容要求简洁明了,同时更加能突出此次改动的细节即可。这部分虽然不是强制要求,但在**时间允许的条件下,尽可能完善**。 > 在命令行中,可以使用 `'''` 或 `\` 进行换行 ### 示例 ```shell git commit -m ''' feature: 新增缓存管理功能 1. 添加缓存删除方法; 2. 添加获取缓存键方法; 3. 统一缓存管理,格式化缓存键; ''' ``` ### <span id="commit-type">提交类别 | type</span> - `feature`: 新功能 - `fix` : 修复bug - `doc` : 文档改变 - `style` : 代码格式改变 - `refactor` : 某个已有功能重构 - `perf` : 性能优化 - `test` : 增加测试 - `revert` : 撤销上一次的 commit - `chore` : 构建过程或辅助工具的变动 - `merge` : 合并代码(更推荐使用 Git 自带的 merge message,详细记录合并信息) ### 补充 1. 如果是 merge 提交,可以采用 Git 自动生成的 merge message 作为提交信息,尤其是有冲突的时候,可以更加详细反映修改内容。 下面是一个 Git merge message 的样例: ``` Merge branch 'v1.9.0_nfby' of https://gogs.ywtinfo.com/ywt/wapapi into v1.9.0_nfby # Conflicts: # src/main/java/com/ywt/gapi/checkup_booking/CheckupBooking.java # src/main/java/com/ywt/gapi/checkup_booking/CheckupBookingService.java # src/main/java/com/ywt/gapi/checkup_booking/CheckupBookingServiceGrpc.java # src/main/java/com/ywt/wapapi/web/controllers/CheckupBookingController.java ``` Git 的 merge message,默认在 `.git/MERGE_MSG` 文件内,提交命令为: ```bash git commit --file .git/MERGE_MSG ```