aicommitsをカスタムしてワンコマンドでpush、なんならPRまで自動化する
はじめに
コミットメッセージを書く時間を 1 秒でも短縮したい──そんな欲望を叶えるのが aicommits です。Git diff を解析し、OpenAI / 他の LLM に投げて人間らしいメッセージを返してくれる CLI で、Node 14 以降が動けば数分で導入できます。
しかし “コミットを生成するだけ” で満足しては開発者の名が廃る。本稿では 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 > 1
やgpt‑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
-
差分サイズ制御
巨大 diff はトークン爆増 → コストも時間も膨らむ。テストファイルや lock file は.aicommitsignore
(存在しなければ自作) で除外を。 -
Conventional Commits + Semantic Release
--type conventional
でメッセージを規範化すれば、自動リリースタグ付けまで一直線。 -
CI でメッセージ強制
サーバー側prepare-commit-msg
に Lint をかけて PR 内メッセージを統一。 -
OpenAI Key の管理
direnv
でフォルダ単位に環境変数を注入し、誤 push を防止。 -
複数候補を表示して選択
aicommits -g 3
で 3 つ提案→fzf などで即時フィルタリング。
まとめ
- aicommits でコミットメッセージ生成を自動化。
- Git エイリアス +
gh
/hub
を組み合わせれば push & PR までワンコマンド化。 - Git hooks やローカル LLM を使えば更なる自動化・コスト削減も可能。
あなたの開発フローが git acpr
の 1 行で完結する未来を、ぜひ今日から試してみてください。
Discussion