EasyACP は、日常的な Git コミット作業を対話的にアシストするためのシェルスクリプトです。コミット前後の確認・差分確認・タグ付け・プッシュまでを 1 コマンドでまとめて実行でき、作業途中の変更を安全に扱うためのガードも備えています。
- 変更内容のプレビューや
git add -pによるステージングを対話的に実行 - コミットテンプレート、GPG署名、
--signoffなどのオプションに対応 - プッシュ前に
git fetch --all --prune --tagsを実行し、ローカルとupstreamの差分を可視化 - プッシュ後に
git gc --autoやgit maintenance run --autoを任意で実行 - 引数なしで実行した場合は、未コミット変更を一時退避しながらupstreamをfast-forwardする更新専用モードを提供
- Bash 4以降
- Git 2.x系
- コマンドラインから
gitが利用できること - リポジトリの現在ブランチにupstreamの追跡設定があること
- このリポジトリをクローンします。
git clone https://github.com/<your-account>/EasyACP.git
- スクリプトに実行権限が付与されていることを確認します。
chmod +x /path/to/EasyACP/bin/easyacp.sh
- 任意のリポジトリで
git easyacpとして使えるよう、Git エイリアスを設定します。git config --global alias.easyacp '!/path/to/EasyACP/bin/easyacp.sh'- システムワイドに導入したい場合は
--globalの代わりに--systemを使用してください。 - 複数のマシンで共有する場合は、パスが異なる点に注意してください。
- システムワイドに導入したい場合は
git easyacp "feat: add awesome thing"実行すると以下のフローを順に処理します。
- 変更をstashに退避
- upstreamを
git fetch --all --prune --tagsで同期 - upstreamとローカルのコミット数を表示
- stashを戻して差分を確認・ステージング
- コミットメッセージを確認・編集
- プッシュ前のプレビューと確認
git push(必要に応じてタグや--force-with-lease、--signoffなどを付与)- オプションで
git gc --autoやgit maintenance run --auto
各ステップでは確認プロンプトが表示されるため、処理を途中で中断することも可能です。
引数なしで実行すると、コミットやプッシュを伴わずに upstream との同期だけを行います。
git easyacp- 未コミットの変更をstashに退避
git fetch --all --prune --tagsによる同期- upstreamのfast-forward反映(必要に応じて
git pull --ff-only相当を実行) - stashを復元
- 「リポジトリは最新の状態です。」と表示して終了
| オプション | 説明 |
|---|---|
-fd, -fulldiff |
ステージング前の差分を全文表示 |
-rebase |
git pull --rebase --autostash --ff-only を試行 |
-p |
git add -p でインタラクティブにステージング |
-s |
git commit --gpg-sign を付与 |
-so, --signoff |
git commit --signoff を付与 |
-t |
~/.gitmessage(既定)などのテンプレートを使用 |
-v, -vim |
エディタでコミットメッセージを編集 |
-f |
git push --force-with-lease を付与 |
-gc |
プッシュ後に git gc --auto と git maintenance run --auto を実行 |
-l, -log, --l, --log |
Git コマンドの標準出力をそのまま表示 |
-h, -help, --help |
ヘルプを表示して終了 |
上記以外の引数はコミットメッセージとして扱われます。複数行のメッセージは \n\n で区切られます。
upstream の追跡ブランチが設定されていませんと表示されるgit branch --set-upstream-to origin/mainなどでupstreamを設定してください。
- GPG 署名が失敗する
gpg-agentの設定やgpg --list-secret-keysの確認を行い、Gitのuser.signingkey設定を見直してください。
- コードはBashスクリプト1本 (
bin/easyacp.sh) のみです。 - lintや自動テストは用意していないため、変更後は手動で
bash bin/easyacp.sh -hなどを実行して動作確認してください。
それは本当にそうです。でも既にシェルへ移植した後なので、もう気力がないです...
まあ、私のシェルのお勉強になったので時間の無駄ではなかったです。
授業以外で使うことはないと思ってましたので、思う存分堪能できて私は満足です。
本シェルスクリプトの利用により発生したいかなる損害(直接的・間接的・特別または派生的損害を含みます)についても、製作者は一切の責任を負いません。
利用はすべて利用者の自己責任で行ってください。
MIT Licenseを参照してください。