✈️

aicommitsをカスタムしてワンコマンドでpush、なんならPRまで自動化する

に公開

はじめに

コミットメッセージを書く時間を 1 秒でも短縮したい──そんな欲望を叶えるのが aicommits です。Git diff を解析し、OpenAI / 他の LLM に投げて人間らしいメッセージを返してくれる CLI で、Node 14 以降が動けば数分で導入できます。

https://github.com/Nutlope/aicommits

しかし “コミットを生成するだけ” で満足しては開発者の名が廃る。本稿では aicommits → push → Pull Request 作成ワンコマンド で完了させるまでを、多角的にまとめました。

1. aicommits の基礎

フロー コマンド
インストール npm i -g aicommits
OpenAI API Key 登録 aicommits config set OPENAI_KEY=<token>
1 回だけ試す git add . && aicommits

aicommits は未認識のフラグをそのまま git commit に渡します。--all/-a を付ければステージングすら不要です。

Git フック連携

aicommits hook install   # prepare-commit-msg に組み込む

インストール後は通常の git commit が AI 付きになります。

2. 設定のカスタマイズ

キー 役割
model 使用モデル gpt-4 に切替え可能
locale 出力言語 ja で日本語コミット
generate 候補数 2 以上にするとトークン費用増加
type Conventional Commits conventional を指定すると feat: などを自動付与
max-length 文字数上限 Monorepo で長いときに調整

コスト管理: generate > 1gpt‑4 はトークン単価が跳ね上がるので、料金上限アラートを設定しいおいてもよいでしょう。

3. ワンコマンド化のアプローチ

3‑1 Git エイリアス + GitHub CLI (推奨)

.gitconfig に追記:

[alias]
acpr = "!f() { \
  git add -A && \
  aicommits --all && \
  BR=$(git symbolic-ref --short HEAD); \
  git push -u origin \"$BR\"; \
  gh pr create --fill --head \"$BR\"; \
}; f"
  • gh pr create --fill はコミットログをタイトル & 本文に流用し、対話をスキップします。
  • aicommits --all がコミット生成を担当。

使い方:

git acpr      # ← たったこれだけ

3‑2 hub を使ったエイリアス

hub 派なら DEV 記事の create-pr 関数が秀逸: push と同時に PR を開きます。

[alias]
create-pr = "!f() { \
  BR=$(git rev-parse --abbrev-ref HEAD); \
  git push -u origin \"$BR\"; \
  hub pull-request --no-edit; \
}; f"

3‑3 ポストコミットフックで自動 push

post-commit フックに

#!/usr/bin/env bash
git push origin HEAD

を置けばコミット完了時に自動 push。Git hooks はクライアント側で任意のシェルを走らせられるので応用範囲が広いです。

注意: フックはローカル限定のため、リポジトリ共有時は .githooks/ などに置いて同期 & core.hooksPath を指定すると吉。

4. ローカル LLM (Ollama) で “0 円” 運用

クラウド API の課金が気になる場合は、Ollama でローカル推論するフォーク (aicommits 互換) が多数あります。たとえば acrosa/aicommits は model 設定を ollama に変えるだけで無料化できます。

コミットフックで Ollama を呼び出す例:

# .git/hooks/prepare-commit-msg
DIFF=$(git diff --cached)
echo "$(ollama run phi3 \"Summarize:\n$DIFF\")" > "$1"

ローカルモデルならオフラインでも動き、高速 & セキュアです。

5. プルリク作成の流儀

CLI コマンド例 特徴
gh gh pr create --fill --draft GitHub 公式。Issue 連携・Review 要求などフラグ豊富。
hub hub pull-request --no-edit GitHub ラッパー。シンプル & 軽量。
git push -o merge_request.create GitLab 環境 Git push のオプションだけで MR 作成可。

6. さらに一歩先へ – 実践 Tips

  1. 差分サイズ制御
    巨大 diff はトークン爆増 → コストも時間も膨らむ。テストファイルや lock file は .aicommitsignore (存在しなければ自作) で除外を。
  2. Conventional Commits + Semantic Release
    --type conventional でメッセージを規範化すれば、自動リリースタグ付けまで一直線。
  3. CI でメッセージ強制
    サーバー側 prepare-commit-msg に Lint をかけて PR 内メッセージを統一。
  4. OpenAI Key の管理
    direnv でフォルダ単位に環境変数を注入し、誤 push を防止。
  5. 複数候補を表示して選択
    aicommits -g 3 で 3 つ提案→fzf などで即時フィルタリング。

まとめ

  • aicommits でコミットメッセージ生成を自動化。
  • Git エイリアス + gh/hub を組み合わせれば push & PR までワンコマンド化。
  • Git hooks やローカル LLM を使えば更なる自動化・コスト削減も可能。

あなたの開発フローが git acpr の 1 行で完結する未来を、ぜひ今日から試してみてください。

Discussion