GitHub Copilot のコミットメッセージ生成をカスタマイズする
GitHub Copilot を使ってコミットメッセージを生成する際に、特定のフォーマット・内容・日本語などを指定する方法を紹介します。
GitHub Copilot のコミットメッセージ生成を指示する
会社でGitHub Copilotなどを使用していないためポートフォリオ用のプロジェクトで本格的に使用してみたところ、メッセージが英語で生成されてしまい、 コミットメッセージのフォーマットも整っていなかったため、GitHub Copilot にコミットメッセージの生成を指示する方法を調べてみました。
指定方法
vscodeではsettings.jsonに以下のように記述することで、GitHub Copilot にコミットメッセージの生成を指示できます。
実際に生成されるコミットメッセージの例
現在作成中のポートフォリオ用のプロジェクトでCleanArchitecture用のディレクトリを作成した際に、以下のようなコミットメッセージが生成されました。 これは上記の設定を適用する前のものです。
今回設定したルールは以下になります。 こちらの2つ目のルールはokineadevさんのGistに掲載されています。
そして生成されたコミットメッセージは以下のようになります。
しっかりとルールに従って、日本語化+Gitmoji+Conventional Commitsのフォーマットに従ったコミットメッセージが生成されました。
Conventional Commitsとは?
私は今まで知らなかったのですが、Conventional Commitsはコミットメッセージのための軽量な規約であるらしいです。 この規則に従いコミットメッセージのテンプレートを生成してくれるツールもあるようです。
Conventional Commitの仕様書をCopilotに指示する
今回は./.docs/conventional-commits.mdというファイルを作成し、以下の内容を記述しました。
conventional-commits.mdの内容
Conventional Commits Usage Guide
📘 This document includes material from the Conventional Commits v1.0.0 Specification, licensed under Creative Commons Attribution 3.0 International (CC BY 3.0).
Copyright © The Conventional Commits Specification Authors.
✍️ Commit Message Format
- The message must start with a type (
feat
,fix
,docs
, etc.). - A scope may be included in parentheses.
- If the commit includes a breaking change,
!
must be added before the colon. - A description must follow after a colon and a space.
✅ Examples
Basic Feature and Fix
With Body
With Footer
Breaking Change (in header)
Breaking Change (footer only)
📌 Common type
Values
Type | Meaning |
---|---|
feat | A new feature |
fix | A bug fix |
docs | Documentation only changes |
style | Code style (formatting, etc.) |
refactor | Code refactoring |
perf | Performance improvement |
test | Adding or fixing tests |
chore | Build process or tool changes |
You may define and use additional types if needed.
🔗 References
上記の内容を指示することで、よりCopilotはConventional Commitsのフォーマットに従ったコミットメッセージを生成することができます
先ほどのこのコミットメッセージよりも<docs>
などをしっかりと指定してくれています。
<docs>
のdocsフォルダ内部のファイルを変更したので指定してくれているのだと思います。
まとめ
今回はGitHub Copilot を使ってコミットメッセージを生成する際に、特定のフォーマット・内容・日本語などを指定する方法を紹介しました。 意外と頭の中ではどんな作業を行ったのかを把握していても、いざメッセージを書くとなると意外と筆(タイピング)が進まないことがありませんか?私はそうでした。 とりあえず生成できること書き始める一歩目がとても楽になりました。
今回は厳しくしていませんが以下のようなlinterを導入することで、より良いコミットメッセージを生成できるようになると思います
参考
https://zenn.dev/prog_hallelujah/articles/b57ddf2c6763ce https://gist.github.com/okineadev/8a3f392a93ae50e8d523e4ba7f9f9ac3 https://www.conventionalcommits.org/ja/v1.0.0/