Git Commit Message 规范与模板

业界标准:AngularJS

来自 AngularJS 所用的规范,格式如下:

<type>(<scope>): <subject>

<body>

<footer>

各段内容说明:

  • type: feat/fix/docs/refactor/perf/test/style/revert/chore
  • scope: 影响范围(组件或文件),可省略
  • subject: 第一人称现在时,动词开头,小写开头,英语 50 字符以内,结尾无句号
  • body: 第一人称现在时,说明动机,与之前的对比,英语每行 72 字符以内
  • footer: 与前不兼容的改动用 'BREAKING CHANGE:' 开头,给出修复方案。对 Issues 进行操作

自动生成 ChangeLog

标准化的 Git Commit Message 可以用工具过滤出 feat 和 fix 的 Commit 生成 ChangeLog,例如:

git log --format='%s (%h)' --reverse --grep '^\(feat\|fix\)' --since=2020-01-01 --before=2020-02-01 | sed 's/([^)]*):/:/' | sort -k1,1 -s

可以添加到 ~/.gitconfig 里:

[alias]
    change-of-last-month = !sh -c 'git log --format=\"%s (%h)\" --reverse --grep \"^\\(docs\\|feat\\|fix\\|perf\\|refactor\\|test\\)\" --since=`date -v-1m +\"%Y-%m-01\"` --before=`date +\"%Y-%m-01\"` | sed \"s/([^)]*):/:/\" | sort -k1,1 -s' 

之后用 git change-of-last-month 就可以输出上个月的 ChangeLog。

配置模板

1. 自定义一个模板

比如这是我的模板,权作 Commit 时的提醒:

# feat/fix/docs/refactor/perf/test/style/revert/chore(scope/issue): changelog

# Modify issues if necessary
# Details if any

# 开头的行会被作为注释过滤掉。

2. 加入到 git 配置中

git config --global commit.template path/to/template

也可以在 ~/.gitconfig 中手动添加

[commit]
    template = path/to/template

3. 提交时使用模板

之后提交时,使用 git commit 不带 -m 参数,就可以调出模板。

Page Not Found

Try to search through the entire repo.