Git Commit 规范以及emoji 使用指南
Git版本规范
分支
master
分支为主分支(保护分支),不能直接在master上进行修改代码和提交develop
分支为测试分支,所以开发完成需要提交测试的功能合并到该分支feature
分支为开发分支,大家根据不同需求创建独立的功能分支,开发完成后合并到develop分支fix
分支为bug修复分支,需要根据实际情况对已发布的版本进行漏洞修复
Tag
采用三段式,v版本.里程碑.序号,如v1.2.1
- 架构升级或架构重大调整,修改第2位
- 新功能上线或者模块大的调整,修改第2位
- bug修复上线,修改第3位
changelog
- 版本正式发布后,需要生产changelog文档,便于后续问题追溯
commit message规范
Commit message一般包括三部分:
Header
、Body
和Footer
Header
-
type(scope):subject
type
:用于说明commit的类别,规定为如下几种- feat:新增功能;
- fix:修复bug;
- docs:修改文档;
- refactor:代码重构,未新增任何功能和修复任何bug;
- build:改变构建流程,新增依赖库、工具等(例如webpack修改);
- style:仅仅修改了空格、缩进等,不改变代码逻辑;
- perf:改善性能和体现的修改;
- chore:非src和test的修改;
- test:测试用例的修改;
- ci:自动化流程配置修改;
- revert:回滚到上一个版本;
scope
:【可选】用于说明commit的影响范围subject
:commit的简要说明,尽量简短
Body
- 对本次commit的详细描述,可分多行
尾部(Footer)
- 不兼容变动:需要描述相关信息
- 关闭指定Issue:输入Issue信息
git commit中使用emoji
-
emoji规范格式
git commit
时,提交信息遵循以下格式:
:emoji1: :emoji2: 不超过 50 个字的摘要,首字母大写,使用祈使语气,句末不要加句号
提交信息主体
引用相关 issue 或 PR 编号 <#110>
初次提交示例:
git commit -m ":tada: Initialize Repo"
-
emoji 指南
emoji | emoji 代码 | commit 说明 |
---|---|---|
? (庆祝) | :tada: | 初次提交 |
✨ (火花) | :sparkles: | 引入新功能 |
? (书签) | :bookmark: | 发行/版本标签 |
? (bug) | :bug: | 修复 bug |
? (急救车) | :ambulance: | 重要补丁 |
? (地球) | :globe_with_meridians: | 国际化与本地化 |
? (口红) | :lipstick: | 更新 UI 和样式文件 |
? (警车灯) | :rotating_light: | 移除 linter 警告 |
? (扳手) | :wrench: | 修改配置文件 |
➕ (加号) | :heavy_plus_sign: | 增加一个依赖 |
➖ (减号) | :heavy_minus_sign: | 减少一个依赖 |
⬆️ (上升箭头) | :arrow_up: | 升级依赖 |
⬇️ (下降箭头) | :arrow_down: | 降级依赖 |
⚡ (闪电) ? (赛马) | :zap: :racehorse: | 提升性能 |
? (上升趋势图) | :chart_with_upwards_trend: | 添加分析或跟踪代码 |
? (火箭) | :rocket: | 部署功能 |
✅ (白色复选框) | :white_check_mark: | 增加测试 |
? (备忘录) | :memo: | 撰写文档 |
? (锤子) | :hammer: | 重大重构 |
? (调色板) | :art: | 改进代码结构/代码格式 |
? (火焰) | :fire: | 移除代码或文件 |
✏️ (铅笔) | :pencil2: | 修复 typo |
? (施工) | :construction: | 工作进行中 |
? (工人) | :construction_worker: | 添加 CI 构建系统 |
? (绿心) | :green_heart: | 修复 CI 构建问题 |
? (锁) | :lock: | 修复安全问题 |
? (鲸鱼) | :whale: | Docker 相关工作 |
? (苹果) | :apple: | 修复 macOS 下的问题 |
? (企鹅) | :penguin: | 修复 Linux 下的问题 |
? (旗帜) | :checked_flag: | 修复 Windows 下的问题 |
案例
-
使用commit message规范
-
使用commit emoji规范
Git Commit 优点
- 统一团队Git Commit标准,便于后续代码review、版本发布、自动化生成change log
- 可以提供更多更有效的历史信息,方便快速预览以及配合cherry-pick快速合并代码
- 团队其他成员进行类
git blame
时可以快速明白代码用意
git-commit-emoji
一款JetBrains系列工具插件,支持IDEA,WebStorm,AndroidStudio,PyCharm,CLoin,GoLand,PhpStorm等等
安装该插件后,在提交代码的时候,会自动提示应该输入的表情.
示例:
安装:
项目根目录下有一个文件:git-commit-emoji.jar
下载到本地后,打开Preference如下图:
目前支持表情:
代码格式,format of the code-?;
提升性能,Improving performance-⚡️;
移除,移除代码,Removing code or files-?;
Fixing a bug,修复bug-?;
撰写文档,文档,Writing docs-?;
重构,重大重构-?;
Downgrading dependencies,降低依赖-⬇️;
Upgrading dependencies,更新依赖-⬆️;
Docker相关工作,docker-?;
initial,initial commit-?;
Critical hotfix,紧急修复,重要补丁-?;
Introducing new features,新功能-✨;
Deploying stuff,配置东西-?;
Updating the UI and style files,更改UI设计-?;
添加测试,Adding tests-✅;
Fixing security issues,修复安全issues-?;
Fixing something on macOS,修复macOS bug-?;
Fixing something on Linux,修复Linux bug-?;
Fixing something on Windows,修复Windows bug-?;
Fixing something on Android,修复Android bug-?;
Fixing something on iOS,修复Ios bug-?;
Releasing / Version tags,发布版本,发布tag-?;
Removing linter warnings,删除警告-?;
Work in progress,工作过程中-?;
Fixing CI Build,修复ci构建-?;
Pinning dependencies to specific versions,将依赖关系绑定到特定版本-?;
Adding CI build system,添加CI生成系统-?;
Adding analytics or tracking code,添加分析或跟踪代码-?;
Refactoring code,重构代码-♻️;
Removing a dependency,减少依赖-➖;
Adding a dependency,增加依赖-➕;
Changing configuration files,改变配置程序-?;
Internationalization and localization,国际化和本土化-?;
Fixing typos,修改错别字-✏️;
Writing bad code that needs to be improved,需要重构的代码-?;
Reverting changes,回滚代码-⏪;
Merging branches,合并分支-?;
Moving or renaming files,删除文件,重命名文件-?;
Adding or updating license,修改license,添加license-?;
Adding or updating assets,增加断言,修改断言-?;
Updating code due to code review changes,当code review时修改代码-?;