Git Commit Format Guide

本文介绍 git commit 时需要输入的内容。

Introduction

Git commit 的 comment 主要分为两个部分:title 和 description。

后来人们为了能在 commit 的 comment 内包含更多的信息,以便于和日益丰富的 CI 系统做集成, 人们约定俗成的在 descrption 里定义了不同的段落格式。

后面分别介绍 title 和 description 的格式。


Commitizen Style

Title

title 的规范五花八门,commitizen 和 pbr 各搞了一套。

不过格式基本固定为:<commit_type>: <commit description title>, 也就是 <本次提交针对的问题类型>: <简要的描述>

本文主要介绍 commitizen。 Commitizen friendly

在 commitizen 里,提交的类型被分为:

? Select the type of change that you're committing: (Use arrow keys)
❯ feat:     A new feature
  fix:      A bug fix
  docs:     Documentation only changes
  style:    Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
  refactor: A code change that neither fixes a bug nor adds a feature
  perf:     A code change that improves performance
  test:     Adding missing tests or correcting existing tests

一般建议和 jira/issue 等需求管理工具配合使用,相应的 commit 格式就如:feat(paas-123): brief description

Description

Description 一般被分为两段:详细描述和关联操作,已空行隔开。

一个完整提交信息形如:

feat: add xxx features

This commit will add some features.

closes #11

可以看出这是一次 feat 类型的提交,并且附带了描述,这次提交的生效还会自动关闭 #11 号 issue。

Commitizen

commitizen 提供了方便的基于 node 的命令行工具 git cz

可参考官方文档:https://github.com/commitizen/cz-cli

如果你已安装有 nodejs,可简单的在项目根路径执行:

$ npm init
$ sudo npm --registry=https://registry.npm.taobao.org \
    --cache=$HOME/.npm/.cache/cnpm \
    --disturl=https://npm.taobao.org/dist \
    --userconfig=$HOME/.cnpmrc install -g commitizen

# 然后就可运行
$ git cz

Merge

需要注意的是,在执行 merge 操作时,建议不要修改 commit 内容, 保证完整的 merge commit 信息,以默认的 Merge branch 开头。