git-msg规范
XWOS的git-commit-msg规范
2 分钟阅读
格式
# [标题] <type>(<scope>): :emoji: <subject>
# - type: feat, fix, perf, refactor, style, revert, docs, test, ci,
# chore, milestone, release, revision, alpha, beta, rc
# - scope: 可为空
# - subject: 以动词开始的短语,结尾无句号
# - 页眉只占一行
# - 每行总长度不超过72个字符(中文字符计2个字符)
#
# [正文] 描述
# - 为什么需要修改?
# - 如何定位问题?
# - 修改有什么副作用?
# - 每行总长度不超过72个字符(中文字符计2个字符)
#
# [脚注] <token:> <text>
# - 问题的ID或链接
# - BREAKING-CHANGE(破坏性修改)
# - 每行总长度不超过72个字符(中文字符计2个字符)
参考:https://www.conventionalcommits.org/
git-commit-message格式规则
- 标题
- 标题信息必须以一个可选的 类别(type) 作为前缀, 类别(type) 后面可以跟一个可选的 范围描述词(scope) , 范围描述词(scope) 需要放在英文的小括号内,之后可再跟一个可选的英文的 ! 表示有 BREAKING CHANGE 发生;
- 类别(type) 说明
- feat: 新功能
- emoji
- 新增
:sparkles: - 移除
:fire: - 配置相关
:wrench: - 升级依赖
:arrow_up: - 新增待改进的代码
:poop: - 新增.o或.a文件
:package:
- 新增
- emoji
- fix: 修复BUG
- emoji
- 修复重大BUG
:ambulance: - 修复BUG
:bug: - 修复警告
:rotating_light: - 修复安全问题
:lock:
- 修复重大BUG
- emoji
- perf: 性能优化
- emoji
- 性能优化
:zap::racehorse: - 移除死代码
:coffin:
- 性能优化
- emoji
- refactor: 重构代码
- emoji
- 重大重构
:hammer: - 新增
:sparkles: - 重构
:recycle: - 移除
:fire: - 配置相关
:wrench: - 破坏性修改
:boom: - 增加log
:loud_sound: - 移除log
:mute: - 调整路径
:truck: - 依赖的第三方软件更新导致的API更新
:alien:
- 重大重构
- emoji
- style: 格式调整(删除行尾空格等)
- emoji
:art:
- emoji
- revert: 回退提交
- emoji
- 回退代码
:rewind: - 降级依赖
:arrow_down:
- 回退代码
- emoji
- docs: 文档
- emoji
- 增加文档
:memo: - 修改.md文档
:book: - 修改源码中的注释
:bulb:
- 增加文档
- emoji
- test: 测试
- emoji
- 增加测试
:white_check_mark: - 增加反向测试(导致错误的测试)
:test_tube:
- 增加测试
- emoji
- ci: 系统集成
- emoji
:construction_worker:
- emoji
- chore: 其他未归类的零碎事务
- emoji
- 配置相关
:wrench: - 分支合并
:twisted_rightwards_arrows:
- 配置相关
- emoji
- milestone: 发布大版本
- emoji
:bookmark:
- emoji
- release: 发布小版本
- emoji
:bookmark:
- emoji
- revision: 发布修订版
- emoji
:bookmark:
- emoji
- alpha: 发布alpha版本
- emoji
:bookmark:
- emoji
- beta: 发布beta版本
- emoji
:bookmark:
- emoji
- rc: 发布rc版本
- emoji
:bookmark:
- emoji
- feat: 新功能
- 标题中的 主题(subject) 与 类别(type) 之间需要增加一个冒号
:与一个空格,然后增加emoji符号,在间隔一个空格; - 标题的最后不能有标点符号;
- 标题只能占一行;
- BREAKING CHANGE 是指
- API原型修改
- API删除
- 正文
- 正文与标题间需要空一行;
- 脚注
- 脚注与正文间需要空一行;
- 每一项脚注需要有一个单词作为 令牌(token) ,
- 格式可以是 令牌(token) 后面跟一个
:和一个空格作为间隔,例如:token: - 格式也可以是 令牌(token) 后面跟一个空格
和#作为间隔,例如:token:
- 格式可以是 令牌(token) 后面跟一个
- 脚注可以有多行内容,直到遇到新的**令牌(token)**为止;
- 脚注的行与行之间无空行;
字符集规则
全部使用 utf-8 字符集。
设置方法
- 增加环境变量
export LESSHARESET=utf-8
- 设置字符集
git config i18n.commitencoding utf-8 # 设置提交日志使用utf-8
git config i18n.logoutputencoding utf-8 # 设置输出日志时使用utf-8
git config core.quotepath false # 中文路径使用utf-8
git config gui.encoding utf-8 # 图形界面使用utf-8
行尾空格规则
原则上,使用 \n(LF)作为换行符,但自动生成的代码可不遵守这个规则。
Windows NTFS文件系统的文件权限问题
NTFS文件系统下,会导致文件的mode变为100644,且chmod无法修改, 可修改git配置忽略文件模式的变更。
git config core.filemode false