Git 提交规约
通用规约
- 【强制】开发环境的配置文件严禁提交到远程库(前后端都适用)
1 | # 本地修改配置文件之后不让git跟踪文件修改状态 |
- 【强制】必须设置 git 提交用户信息
1 | # git生成ssh密钥 |
一、提交信息格式
提交信息需保持统一的格式,每次提交的 commit message 必须包括 type、scope 和 subject 三部分。
组成部分:
主要分为下面三个部分: Header,Body,Footer。
1 | <type>(<scope>): <subject> |
下面详细解释下个个部分的含义。
1. Header
Header 的部分只有一行,包括三个字段: type(必需), scope(可选), subject(必需)
对应到 idea 插件上图的配置分别为 Header 部分的:
type(必需) | Type of change | commit 类别 |
---|---|---|
scope(可选) | Scope of this change | commint 影响的范围 |
subject(必需) | Short description | 简短的描述 |
type 用于说明 commit 的类别,只允许使用下面标识
feat
:新功能(feature)fix
:修补 bugdocs
:文档(documentation)style
: 格式(不影响代码运行的变动,空格,格式化,等等)refactor
:重构(即不是新增功能,也不是修改 bug 的代码变动)perf
: 性能 (提高代码性能的改变)test
:增加测试或者修改测试build
: 影响构建系统或外部依赖项的更改(maven,gradle,npm 等等)ci
: 对 CI 配置文件和脚本的更改chore
:对非 src 和 test 目录的修改revert
: Revert a commit
scope
用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
subject
是 commit 目的的简短描述,不超过 50 个字符。
1 | 以动词开头,使用第一人称现在时,比如change,而不是changed或changes |
2. Body
Body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例。
1 | 如有必要,更详细的说明文本。包装它 |
有一个注意点。
(1)应该说明代码变动的动机,以及与以前行为的对比。
3. Footer
Footer 部分只用于两种情况。
(1)不兼容变动
如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE
开头,后面是对变动的描述、以及变动理由和迁移方法。
(2)关闭 Issue
这里填写 Jira 的 Issue ID,可以关联 Jira 问题
这里的关闭 Issue 并不能改变 Jira Issue 的状态,Gitlab 与 Jira 的插件支持不稳定。但是可以将 Git Commit 关联到 Jira Issue
如果当前 commit 针对某个 issue,那么可以在 Footer 部分关闭这个 issue 。
1 | Closes #234 |
也可以一次关闭多个 issue 。
1 | Closes #123, #245, #992 |
最后一个完整的 commit message
示例如下:
1 | feature(流程管理): 流程管理 |
二、提交信息生成方式
JetBrains 系列 IDE
JetBrains
公司的 IDEA
、WebStrom
可以安装 Git Commit Message Plugins
插件
安装步骤如下:
(1)安装 Git Commit Message Plugins 插件
1 | File -> Settings -> Plugins -> Marketplace -> 搜索 "Git Commit Message Plugins" |
(2)使用插件规范提交信息
在 Commit 代码处,选择使用Git Commit Message Plugins插件,如下图所示
VS Code
(1)安装插件
扩展商店搜索 -> git-commit-plugin
-> 安装
(2)使用插件生成提交信息
选择对应的部分进行填写,回车确认到下一步
填写好提交信息之后正常提交即可
命令行提交
通过多个 -m 做到多行注释提交,每个 -m 代表一行
通过多行注释提交命令,将上面说到的 提交注释模板
分块填写
1 | git commit -m "header" -m "body" -m "footer" |
例子如下:
1 | git commit -m "feature(流程管理): 流程管理" -m "-流程模型" -m "Closes #101" |
SoureTree
直接在提交注释输入框内编辑注释信息即可(支持多行编辑)