在 Git 中,每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。这个操作将通过 git commit 完成。
git commit -m "芜湖~起飞"
上面代码的-m参数,就是用来指定 commit message 的。
如果一行不够,可以只执行 git commit ,就会跳出文本编译器,让你写多行。
git commit
但是很显然的问题像 芜湖~起飞 这样没有规范的commit message,我们并没有办法去快速的了解此次提交的目的究竟是什么。所以,我们需要学习了解并落实commit message规范。
Commit message 包括三个部分:Header,Body 和 Footer。可以用下方的格式表示它的结构。
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
其中,Header 是必需的,Body 和 Footer 可以省略(默认忽略),一般我们在 git commit 提交时指定的 -m 参数,就相当于默认指定 Header。
不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。
Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。
- feat:新功能(feature)
- fix:修补bug
- docs:文档(documentation) 比如README, CHANGELOG, CONTRIBUTE等
- style:代码格式化(仅仅修改了空格、格式缩进、逗号等,不改变代码逻辑)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- perf: 优化相关,比如提升性能、体验
- test:测试用例,包括单元测试、集成测试等
- chore:改变构建过程或增加依赖库、辅助工具等
- revert: 回滚代码
fix(css): 修改 起飞按钮 样式
chore(deps): 更新 moment 至 2.24.0 版本
chore(build): 修改生产环境命令配置
- 以动词开头,使用第一人称现在时,比如"新增"、“修复”、“更改”、“优化”
- 第一个字母小写
- 结尾不加句号(.)
Body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例。
More detailed explanatory text, if necessary. Wrap it to
about 72 characters or so.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Use a hanging indent
有两个注意点。
Footer 部分只用于两种情况。
不兼容变动
如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。
关闭 Issue 或者 bug
如果当前 commit 针对某个 issue 或者 bug ,那么可以在 Footer 部分关闭。
Closes #234
也可以一次关闭多个。
Closes #123, #245, #992
还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header。
revert: feat: 新增了起飞组件
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
Body部分的格式是固定的,必须写成This reverts commit <hash>,其中的hash是被撤销 commit 的 SHA 标识符。
feat: 新增了起飞组件
fix: 修复 起飞按钮失效的问题 (#12345)
fix: 修复 起飞按钮失效,导航栏显示异常的问题(#12345,#12346)
docs: 更新 README文档
style: 删除 起飞组件多余空格
refactor: 重构 起飞组件
perf: 优化 起飞页面性能
test: 新增 起飞组件 测试用例
chore(deps): 更新 moment 至 2.24.0 版本
chore(build): 修改生产环境命令配置
revert: feat: 新增了起飞组件
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.