AIにお任せして、Gitコミットメッセージを書かなくなってしまった。

2023/06/06に公開
2

想定読者

  • 以下のように毎回コミットメッセージを考えて記載される方
git add -A
git commit -m"ほげほげ"

前提

お使いのPCにNode.jsがインストールされていることが前提条件になります。
インストールされていない方は、拙著で恐縮ですがこちらをご参照ください。

https://zenn.dev/takaha4k/articles/1fdc3a3f29a10e

方法

aicommitsを利用します。
事前にOpenAIのAPIKeyを取得する。

npm install -g aicommits
aicommits config set OPENAI_KEY=***********************

ついでに、gitコマンドのエイリアスも設定しておくことで git ac するだけで良いようにする。

git config --global alias.ac '!git add -A && aicommits -a'

早速、使ってみる。

実例

1. ヘッダーを1行削除してみる


2. git ac と叩くと自動でコミットメッセージが提案される

Refactor title slot to display correct text in App.vue component


3. 一旦、Noと選択する


  1. もう一度、git ac
    再びメッセージが提案される

Refactor App.vue component to remove unnecessary template code


  1. Yesを押下する

  1. コミットされていることを確認


人間がコミットメッセージをゼロから考える必要はなくなった。

以上です。

追記

最後までご覧いただき、ありがとうございます。
人生初のプチバズで、知人から「Twitterで見た」と声をもらうなど反響の大きさにびっくりです。
aicommitsは、学習には利用されないChatGPT APIを利用してるみたいです。
ただ、業務で用いる場合は、自社におけるAIサービスを業務利用する場合の規約やガイドライン等をご確認の上、自己責任でご活用ください。

Discussion

okuramasafumiokuramasafumi

https://github.com/sigoden/aichat というツールを使って同じことができそうだったので試してみました。

# roles.yaml
- name: commit
  prompt: >
    I want you to come up with great commit message from the given change.
    The change is given as a diff format.
aichat -r commit "$(git diff)"

これでGitの差分からコミットメッセージを出力できるので、あとは使うだけです。

git commit -a -m "`aichat -r commit \"$(git diff)\"`"

もちろん、提案を却下したいときなどはもっと凝ったインターフェースが必要ですが、これだとaichatのバイナリを落とすだけで動くので便利です。