🛠️

"俺の最強のコミットメッセージ規約"をAIに守らせる「git-ai-diff」

に公開

コミットメッセージ、ちゃんと書いてますか?

私は書いてません。

一生キーボードを打っている私のような人種にとって、人生で一番喜ばしくある、成果を世に出すその瞬間に来る妨害は、一瞬であっても許しがたいものです。[1]

8月頃からアルバイトを始めた私は、その許しがたい瞬間の大事さを身をもって味わうことになりましたが、しかしやはり面倒だという気持ちを捨てきれずにいます。

そこで私は考えました。現在の差分から、自分のこだわりのルールに従ったコミットメッセージをAIに自動で考えさせればいいのだ!と。

もちろん、私が思いつくなら他にもいろんな人がやってるのは当たり前です。例えばgithub copilotだって自動でコミットメッセージを作ってくれます。

しかし、私には気に入らない点がありました。github copilotのコミットメッセージ生成はvscode前提です。また、デフォルトの状態ではすごく長いコミットメッセージを生成してきます。また、業務などでは勝手に外部のLLMにデータを入力するなんてことは絶対あり得ません!

そんな事情を持った私がいい感じに作ったgit-ai-diffをご紹介します。

git-ai-diffとは?

git-ai-diffはRust製のCLIツールです。

https://github.com/googlefan256/git-ai-diff

主にgit diffを解析しAIが読みやすいように書き換える部分、AI向けに書き換えたdiffを元に、AIに特定フォーマットのコミットメッセージを作られる部分、の2つの部分で出来ています。

使い方

まず

cargo install --git https://github.com/googlefan256/git-ai-diff

でインストールします。

とりあえず

git ai-diff --ai --unstaged

と実行すれば、純粋にステージングされる前の変更分のAI向けに加工されたdiffを表示してくれます。

オレオレルールの適用

AIにコミットメッセージを考案させるには、

git ai-diff --ai --openai-api-base "http://localhost:14434" \
--openai-api-key "hello" \
--openai-api-model "gpt-oss-20b" \
--ai-xml-formatter "{% commit_type %}: {% commit_message %}" \
--hide-diff \
--unstaged \
--staged

などのように入力します。
system promptにこだわりを入力し、xml formatterにjinjaライクなテンプレートを記入することでいい感じに出してくれます。

このライブラリがcommitを実際にやることはないので、完全自動でやりたければパイプ演算子などで良い感じにするのが想定仕様となります。

最後に

完全に私個人が欲しかっただけのライブラリですが、ええやんと思ったら是非スターとかなんか下さい。issue/質問も大歓迎です!

https://github.com/googlefan256/git-ai-diff

脚注
  1. 諸説あります ↩︎

GitHubで編集を提案
Neody

Discussion