3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Conventional Commitsとは?

Last updated at Posted at 2024-10-26

概要

「人間と機会が読みやすく、意味のあるコミットメッセージにするための仕様」である

  • コミットメッセージのための軽量の規約
  • 明示的なコミット履歴を作成するための簡単なルール
  • この規則に従うことで、自動化ツールの導入を簡単にする
  • コミットメッセージで機能追加・修正・破壊的変更などを説明することで、Semantic Versioningと協調動作することができる

コミットメッセージの形式

<type>[optional scope]: <description>

[optional body]

[optional footer]
  • type: コミットの種類を表す(例: feat, fix, docsなど)
  • scope: 変更が影響する範囲(オプション、例: login, api)
  • description: 簡潔な変更内容の説明
  • body: 詳細な説明(オプション)
  • footer: 例として、関連するIssue番号やBREAKING CHANGEを示す(オプション)

Type一覧

Type 説明
feat 新機能の追加
fix バグ修正
docs ドキュメントの更新
style コードフォーマットの変更
refactor コードのリファクタリング
test テストの追加や修正
chore ビルドプロセスや補助ツールの変更
  1. fix:コードベースのバグにパッチを当てる
  2. feat:コードベースに新しい機能を追加する
  3. BREAKING CHANGE or !:APIの破壊的変更を導入する
  4. それ以外の型:Angular の規約が基になっているものとして以下がある
- build
- chore
- ci
- docs
- style
- refactor
- perf
- test

破壊的変更への対応

破壊的変更は、コミットメッセージで「!」を型に追加(例: feat!:)するか、フッターにBREAKING CHANGE:を記載すること

  • 破壊的変更(breaking changes)は、以前のバージョンと互換性がなく、既存のコードや機能に影響を与える変更を指す
  • これは、APIの変更、メソッドの削除、または動作の根本的な変更など、ユーザーがコードを更新する必要がある場合に該当します

使えそうなツール

ツール名 説明 他ツールとの関係
Commitizen コマンドラインでConventional Commits形式のコミットメッセージを作成可能 (Commitizen) commitlintで作成したメッセージを検証(commitlint)
commitlint コミットメッセージの形式を検証 Huskyと統合し、コミット前にチェック可能
Husky Gitフックを使ってコミットメッセージの形式を検証 (Husky) commitlintをpre-commitフックに設定
Semantic Release コミットメッセージに基づき、バージョンを自動更新し、CHANGELOGを生成 (Semantic Release) commitlintで検証されたメッセージを基に動作

ワークフローの例

  1. 開発者はCommitizenを使って、git czでコミットメッセージを作成(例: feat: 新機能の追加)
  2. Huskyがpre-commitフックをトリガーし、commitlintを実行。メッセージがConventional Commits形式でない場合、コミットを拒否
  3. コミットが成功すると、コミット履歴が蓄積。リリース時にSemantic Releaseが実行され、コミットメッセージに基づいてバージョン(例: 1.0.0 → 1.1.0)を自動更新し、リリースノートを生成

使用例

タイトルおよび破壊的変更のフッターを持つコミットメッセージ
feat: allow provided config object to extend other configs

BREAKING CHANGE: `extends` key in config file is now used for extending other config files
破壊的変更を目立たせるために ! を持つコミットメッセージ**
feat!: send an email to the customer when a product is shipped
スコープおよび破壊的変更を目立たせるための ! を持つコミットメッセージ
feat(api)!: send an email to the customer when a product is shipped
! と BREAKING CHANGE フッターの両方を持つコミットメッセージ
chore!: drop support for Node 6

BREAKING CHANGE: use JavaScript features not available in Node 6.
本文を持たないコミットメッセージ
docs: correct spelling of CHANGELOG

スコープを持つコミットメッセージ

feat(lang): add polish language

複数段落からなる本文と複数のフッターを持ったコミットメッセージ

fix: prevent racing of requests

Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.

Remove timeouts which were used to mitigate the racing issue but are
obsolete now.

Reviewed-by: Z
Refs: #123

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?