gitで流行のコミットメッセージとベーシックなコミットメッセージのフォーマットまとめ

最近気になってたchore(package): bump versionGoogleフォーマットとBump versionなベーシックフォーマットのまとめ。

Googleフォーマット

chore(package): bump version

Angular.jsなど主にJavaScriptのメジャーリポジトリで人気のフォーマット。

github.com

azuが概要をまとめているのでこれを引用する。

feat(ngInclude): add template url parameter to events

The `src` (i.e. the url of the template to load) is now provided to the
`$includeContentRequested`, `$includeContentLoaded` and `$includeContentError`
events.

Closes #8453
Closes #8454
                         scope        commit title

        commit type       /                /      
                \        |                |
                 feat(ngInclude): add template url parameter to events

        body ->  The 'src` (i.e. the url of the template to load) is now provided to the
                 `$includeContentRequested`, `$includeContentLoaded` and `$includeContentError`
                 events.

 referenced  ->  Closes #8453
 issues          Closes #8454

Karmaにキーワードの一覧などがまとまっている。

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

<body>

<footer>

Allowed <type> values:

  • feat (new feature for the user, not a new feature for build script)
  • fix (bug fix for the user, not a fix to a build script)
  • docs (changes to the documentation)
  • style (formatting, missing semi colons, etc; no production code change)
  • refactor (refactoring production code, eg. renaming a variable)
  • test (adding missing tests, refactoring tests; no production code change)
  • chore (updating grunt tasks etc; no production code change)

Example <scope> values:

  • init
  • runner
  • watcher
  • config
  • web-server
  • proxy
  • etc.

The <scope> can be empty (eg. if the change is a global or difficult to assign to a single component), in which case the parentheses are omitted. In smaller projects such as Karma plugins, the <scope> is empty.

あらかじめコミットメッセージ(タイトル)に使用するキーワードが絞り込まれててタイトルに悩まず手早くコミットしていけるのがよい。 スコープの絞り込みも便利。

github.com github.com

コミットログからチェンジログを生成するconventional-changelogをあわせて使うとさらに強力。

https://github.com/ajoslin/conventional-changelog/blob/master/conventions/angular.mdgithub.com

ベーシックフォーマット(Gitフォーマット)

Bump version

本家本元Gitの由緒正しいフォーマット。

github.com

フォーマットのルールがまとまったよい翻訳記事があるのでこれを引用する。

  1. タイトルの後は1行空けて本文を書く
  2. タイトルを50字以内におさめる
  3. タイトルの文頭を大文字にする
  4. タイトルの文末にピリオドを付けない
  5. タイトルは命令形で記述する
  6. 本文は1行あたり72字以内におさめる
  7. 本文ではどのようにではなく何をとなぜを説明する

ルールのいくつかはGoogleフォーマットにも当てはまる基礎基本。

postd.cc

自分が使っているフォーマット

chore: bump version

しばらく使ってみたところ変更のスコープは一意に特定することも一貫させることも困難であり公式のリポジトリでも省略することが多い。 このため基本的に定型部分は操作種別の分類・表明によりコミットの意図と影響範囲を明確にするのみにとどめ、具体的なスコープの絞り込みは行わないものとした。 ただしプロダクトが独立的な機能の集合である場合はコミットの文脈情報が不足するためその機能をスコープとして明示する。

なおバージョンアップのコミットメッセージは本稿の例ではバージョンナンバーを記述しないものを使用しているが、自分はLinuxとGitのリポジトリにならって明記している。