git-msg规范

XWOS的git-commit-msg规范

格式

# [标题] <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:
      • fix: 修复BUG
        • emoji
          • 修复重大BUG :ambulance:
          • 修复BUG :bug:
          • 修复警告 :rotating_light:
          • 修复安全问题 :lock:
      • perf: 性能优化
        • emoji
          • 性能优化 :zap: :racehorse:
          • 移除死代码 :coffin:
      • refactor: 重构代码
        • emoji
          • 重大重构 :hammer:
          • 新增 :sparkles:
          • 重构 :recycle:
          • 移除 :fire:
          • 配置相关 :wrench:
          • 破坏性修改 :boom:
          • 增加log :loud_sound:
          • 移除log :mute:
          • 调整路径 :truck:
          • 依赖的第三方软件更新导致的API更新 :alien:
      • style: 格式调整(删除行尾空格等)
        • emoji
          • :art:
      • revert: 回退提交
        • emoji
          • 回退代码 :rewind:
          • 降级依赖 :arrow_down:
      • docs: 文档
        • emoji
          • 增加文档 :memo:
          • 修改.md文档 :book:
          • 修改源码中的注释 :bulb:
      • test: 测试
        • emoji
          • 增加测试 :white_check_mark:
          • 增加反向测试(导致错误的测试) :test_tube:
      • ci: 系统集成
        • emoji
          • :construction_worker:
      • chore: 其他未归类的零碎事务
        • emoji
          • 配置相关 :wrench:
          • 分支合并 :twisted_rightwards_arrows:
      • milestone: 发布大版本
        • emoji
          • :bookmark:
      • release: 发布小版本
        • emoji
          • :bookmark:
      • revision: 发布修订版
        • emoji
          • :bookmark:
      • alpha: 发布alpha版本
        • emoji
          • :bookmark:
      • beta: 发布beta版本
        • emoji
          • :bookmark:
      • rc: 发布rc版本
        • emoji
          • :bookmark:
    • 标题中的 主题(subject)类别(type) 之间需要增加一个冒号 : 与一个空格 ,然后增加emoji符号,在间隔一个空格
    • 标题的最后不能有标点符号;
    • 标题只能占一行;
    • BREAKING CHANGE 是指
      • API原型修改
      • API删除
  • 正文
    • 正文与标题间需要空一行;
  • 脚注
    • 脚注与正文间需要空一行;
    • 每一项脚注需要有一个单词作为 令牌(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