怎么创建一个良好的Git提交信息
提交信息是对提交之前添加和更改的文件所做的更改的简短描述。
良好的提交信息不仅对你所参与的项目上其它的团队成员很重要,对你自己而言也很重要,你需要跟踪所有提交,并确切知道在提交期间发生的变动。
即使你开发的是个人项目,我也建议你开始养成编写良好的提交信息的习惯。
可以随着你的个人习惯和公司来改变
文字规范
1 | type: subject |
不过也有人说commit一共应该由5个部分组成,具体内容如下
1 | type: subject |
1、 type
提交 commit 的类型,包括以下几种
- feat: 新功能
- fix: 修复问题
- docs: 修改文档
- style: 修改代码格式,不影响代码逻辑
- refactor: 重构代码,理论上不影响现有功能
- perf: 提升性能
- test: 增加修改测试用例
- chore: 修改工具相关(包括但不限于文档、代码生成等)
- deps: 升级依赖
2、scope
修改文件的范围(包括但不限于 doc, middleware, core, config, plugin)
3、subject
用一句话清楚的描述这次提交做了什么,它应该包含对所做更改的简短描述。长度不能超过50个字符,应以大写字母开头,命令式的语法。“Add”,而不是 “Added” 或 “Adds”。
4、body
正文用于说明你进行了哪些更改以及进行更改的原因。补充 subject,适当增加原因、目的等相关因素,也可不写。并非所有提交都很复杂,需要一个正文,尤其是如果你仅是开发一个个人的项目,因此正文是可选的。
5、footer
页脚也是可选的,主要在你使用issue追踪引用issue ID时使用。
- 当有非兼容修改(Breaking Change)时必须在这里描述清楚
- 关联相关 issue,如
Closes #1
,Closes #2, #3
- 如果功能点有新增或修改的,还需要关联文档
doc
emoji规范
注:以下emoji表情在git提交时已经完全支持,哪怕下面的表情显示不完整也不用慌,可以直接在git-submit里使用。
emoji | emoji代码 | commit说明 |
---|---|---|
🎨 (调色板) | :art: | 改进代码结构/代码格式 |
⚡️ (闪电) | :zap: | 提升性能 |
🐎 (赛马) | :racehorse: | 提升性能 |
🔥 (火焰) | :fire: | 移除代码或文件 |
🐛 (bug) | :bug: | 修复 bug |
🚑 (急救车) | :ambulance: | 重要补丁 |
✨ (火花) | :sparkles: | 引入新功能 |
📝 (铅笔) | :pencil: | 撰写文档 |
🚀 (火箭) | :rocket: | 部署功能 |
🎉 (庆祝) | :tada: | 初次提交 |
✅ (白色复选框) | :white_check_mark: | 增加测试 |
🔒 (锁) | :lock: | 修复安全问题 |
🍎 (苹果) | :apple: | 修复 macOS 下的问题 |
🐧 (企鹅) | :penguin: | 修复 Linux 下的问题 |
🏁 (旗帜) | :checked_flag: | 修复 Windows 下的问题 |
🔖 (书签) | :bookmark: | 发行/版本标签 |
🚨 (警车灯) | :rotating_light: | 移除 linter 警告 |
🚧 (施工) | :construction: | 工作进行中 |
💚 (绿心) | :green_heart: | 修复 CI 构建问题 |
⬇️ (下降箭头) | :arrow_down: | 降级依赖 |
(上升箭头) | :arrow_up: | 升级依赖 |
👷 (工人) | :construction_worker: | 添加 CI 构建系统 |
📈 (上升趋势图) | :chart_with_upwards_trend: | 添加分析或跟踪代码 |
🔨 (锤子) | :hammer: | 重大重构 |
➖ (减号) | :heavy_minus_sign: | 减少一个依赖 |
🐳 (鲸鱼) | :whale: | 相关工作 |
➕ (加号) | :heavy_plus_sign: | 增加一个依赖 |
🔧 (扳手) | :wrench: | 修改配置文件 |
🌐 (地球) | :globe_with_meridians: | 国际化与本地化 |
✏️ (铅笔) | :pencil2: | 修复 typo |
这是Udacity学生git提交信息的例子Udacity Git Commit Message Style Guide
feat: 少于50个字符的更改概括。
如有必要,提供更详细的说明文字,约72字符左右。在某些情况下,第一行被视为提交的主题,其余文本作为正文。 将摘要与正文分开的空行至关重要(除非没有正文);各种工具,例如 log,shortlog和rebase,如果同时运行两者,可能会造成混乱。
解释该提交解决的问题。注意说明为什么做这个更改(代码作了注释)。另一方面,是否会导致负面的作用或其他不直观的后果?这也是需要说明的地方。
空白行之后是其它段落。
- 项目要点也可以加进来
- 通常在项目符号前使用连字符或星号,用一个空格隔开,中间有空白行,但是约定在这里变化
如果你使用issue追踪,可以在footer中写上对issue的关联,就像这样:
Resolves: #123See
also: #456, #789
这是一个实际的例子:
1 | docs: Fix typo in README.md |
正文之外同样有一些有意思的评论:
简短明了,感谢你的这篇文章!
我倾向于使用表情符号作为类型——一看就显示了提交的类型,例如:
➕ :heavy_plus_sign: 添加文件或实现功能时
🔨 :hammer: 修复bug或处理issue时
💚 :green_heart: 在改进代码或注释时
⚡ :zap: 在提高性能时
📜 :scroll: 更新文档或readme时
🔑 :key: 在处理安全相关时
🔁 :repeat: 更新依赖或数据时
✅ :white_check_mark: 建立一个新的release时
👕 :shirt: 重构或删除linter警告时
❌ :x: 删除代码或文件时
…提交历史看起来很棒:
我讨厌别人这么做。它在git日志中看起来令人困惑。只需使用unicode表情符号,它们就可以在任何地方使用。
顺便说一下,我最喜欢的表情符号用于提交信息:🎆🎊🎉😖💢😅 (我通常将它们放在提交信息的末尾)
我目前使用git alias创建带有表情符号的漂亮提交消息,我的提交信息结构如下:
1 | [emoji] <type>(scope): <message> |
例如
1 | 🐞 FIX(pages): security issue fix on pages table |
这是我的.gitconfig
1 | # Git Commit, Add all and Push — in one step. |
感谢你的提议!
这是Git表情符号的一个网站:https://gitmoji.carloscuesta.me/
🎉 :tada:初次提交
🚀 :rocket:[Add] 实现新功能时
🔨 :hammer:[Fix]修复bug或处理issue时
🎨 :art:[Refactor] 当重构/改善代码时
🚧 :construction: [WIP]
📝 :pencil: [Minor] 一些小更新
大家可以使用随机提交信息生成网站。享受它吧!