Git のコミットプレフィックスを絵文字で彩る(自動で)
はじめに
Git のコミットメッセージにプレフィックスを付けることで、次のような効果があると言われています。
- メッセージからコミットの内容を予想しやすくなりレビュアーの負荷を下げられる
- プレフィックスを意識することでコミット粒度を自然と適度に分割できるようになる
- 後でログからコミットを探しやすくなる
【今日からできる】コミットメッセージに 「プレフィックス」 をつけるだけで、開発効率が上がった話 - Qiita
私自身も実践し、効果を実感していたのですが、feat:
などの文字だけだと直感的にどのプレフィックスなのか把握できないし、プレフィックスに絵文字を付けたいなーと思いました。
しかし、コマンドラインで絵文字を入力するのは手間がかかります。
GitHub では絵文字の代わりに Emoji code を書くことで絵文字を表示するという機能がありますが、これを覚えるのは辛いし、コマンドラインでログを見たときに絵文字が表示されないという点が私にとってはイマイチでした。
Emoji code | 絵文字 |
---|---|
:sparkles: |
✨ |
:construction: |
🚧 |
:books: |
📚 |
Basic writing and formatting syntax - GitHub Docs
そこで、以前 プレフィックスを書くと自動で絵文字を付けてくれる ツールを作りました。
Git Fancy Message Prefix
ツールはGitHubで公開しています。Gitの prepare-commit-msg フックスクリプトとして実装しました。
👉 negokaz/git-fancy-message-prefix: A Git prepare-commit-msg hook for fancy commit message
このフックスクリプトを使うと、コミットログがこんな感じになります。
(趣味で作ってる別のツールのコミットログです)
どんな機能があるのか?
git commit -m
でコミットメッセージの先頭にプレフィックスを付けると、自動でプレフィックスに対応する絵文字が先頭に追加されます。例えば、feat:
プレフィックスには ✨ が追加されます。
-m
オプションなしで git commit
した場合は次のようにテンプレートが表示されます。
テンプレートのコメントアウトを解除してコミットメッセージを書けば絵文字とプレフィックスの入力が省けます。
デフォルトでは次のようなプレフィックスと絵文字が設定されています。
プレフィックス | 絵文字 | 説明 |
---|---|---|
feat: |
✨ (\U2728 ) |
新機能追加 |
fix: |
🐞 (\U1f41e ) |
バグ修正 |
doc: |
📚 (\U1f4da ) |
ドキュメントのみの変更 |
style: |
💄 (\U1f484 ) |
プログラムの動きに影響を与えない変更(インデントの調整やフォーマッタにかけた場合など) |
refactor: |
⛏️ (\U1f528 ) |
バグ修正や新機能追加以外のコード修正 |
perf: |
🚀 (\U1f680 ) |
パフォーマンス改善のためのコード修正 |
test: |
🚨 (\U1f6a8 ) |
テストの追加や既存テストの修正 |
chore: |
👷 (\U1f477 ) |
ビルドプロセスやドキュメント生成のような補助ツールやライブラリの変更 |
merge: |
🔀 (\U1f500 ) |
マージコミットにはこの絵文字が付きます |
スクリプトの template
関数の中を編集すれば、プレフィックスと対応する絵文字のカスタマイズができます。
function templates { # format: # # prefix: emoji(code) description # # Full Emoji List: https://unicode.org/emoji/charts/full-emoji-list.html cat <<EOF feat: \U2728 新機能追加 fix: \U1f41e バグ修正 doc: \U1f4da ドキュメントのみの変更 style: \U1f484 プログラムの動きに影響を与えない変更\n(インデントの調整やフォーマッタにかけた場合など) refactor: \U1f528 バグ修正や新機能追加以外のコード修正 perf: \U1f680 パフォーマンス改善のためのコード修正 test: \U1f6a8 テストの追加や既存テストの修正 chore: \U1f477 ビルドプロセスやドキュメント生成のような補助ツールやライブラリの変更 merge: \U1f500 EOF # "merge:" is a special prefix to create merge commit message. }
本プロジェクトは MIT ライセンスで公開しているため、自由にコピーしてカスタマイズし、ご自身のチーム内で共有頂けます。
インストール方法
次のコマンドを git のワーキングディレクトリ(.git
があるディレクトリ)で実行してください。Windows の場合は Git Bash で実行してください。
curl https://raw.githubusercontent.com/negokaz/git-fancy-message-prefix/master/prepare-commit-msg.ja -o .git/hooks/prepare-commit-msg && chmod +x .git/hooks/prepare-commit-msg
テンプレートが英語のものもあります。詳しくは こちら を参照してください。
おわりに
コミットメッセージのプレフィックスに絵文字が追加されたことで、プレフィックスを読まなくても直感的にどのようなコミットなのかが把握できるようになりました。コミットログが勝手に賑やかになっていくので、コミットするときになんとなくテンションが上がります。
もし気に入って頂けたら使ってみてください。
Discussion