pummitでコミットメッセージを工夫してQOLを上げよう!

2023/03/22に公開

なんだこれは

写真のような見た目がグッドなコミットメッセージを簡単に作れちゃうGo製のツールです。
コミュニティなどで共有していただけると嬉しいです!

https://github.com/HidemaruOwO/pummit

どうして作ったんだい? 🧐

Qiitaでこのような記事を見つけました。
https://qiita.com/Jung0/items/0a9a7a97a2c17f92d3c5
この記事で紹介されていたことを要約すると、絵文字を使用してコミット内容を分かりやすくしようというTipsでした。

例を挙げると、この記事では以下のようなフォーマットが紹介されていました。

:books: READMEの修正


そして、それに一つだけ手を加えました。

:books: READMEの修正 (README.md)

pummitはこのフォーマットのコミットメッセージを作成するためのツールです。

pummitのインストール 😊

Homebrewでインストールする場合はこちらを実行してください

brew tap hidemaruowo/tap
brew update
brew install pummit

Goの場合はこちらです

go install github.com/HidemaruOwO/pummit@latest

https://github.com/HidemaruOwO/pummit/releases

GitHubのリリースでも配布してるので、実行ファイルをダウンロードできます。

使い方 💨

pummitは2つの方法でコミットメッセージを作成できます。

pummit emojiprefix 'subject'
# or
pummit 'emojiprefix subject'

# Example
pummit sparkles 'I am unko man'
# Run: git commit -m ':sparkles: I am unko man (path/to/added/file, path/to/added/file)'

pummit 'sparkles I am unko man'
# Run: git commit -m ':sparkles: I am unko man (path/to/added/file, path/to/added/file)'

どんな絵文字を使えばいいんだい? 🌟

pummitの使いたくても、どの絵文字を使えば良いか分からないと思います。
自分が使用している絵文字をこちらです!
これはQiitaの記事で紹介されていたものに少し改変を加えたものです。
https://qiita.com/Jung0/items/0a9a7a97a2c17f92d3c5#2-テンプレ作り-絵文字を選ぶ

# ==================== Emojis ====================
# 🎉  :tada: 初めてのコミット(Initial Commit)
# ♻️   :recycle: マージ(Merge)
# 🔖  :bookmark: バージョンタグ(Version Tag)
# ✨  :sparkles: 新機能(New Feature)
# 🐛  :bug: バグ修正(Bagfix)
# 👀  :eyes: リファクタリング(Refactoring)
# 📚  :books: ドキュメント(Documentation)
# 🎨  :art: デザインUI/UX(Accessibility)
# 🐎  :horse: パフォーマンス(Performance)
# 🔧  :wrench: ツール(Tooling)
# 🚨  :rotating_light: テスト(Tests)
# 💩  :hankey: 非推奨追加(Deprecation)
# 🗑️  :wastebasket: 削除(Removal)
# 🚧  :construction: WIP(Work In Progress)
# ☃️  :snowman: 仕様変更

# ==================== Format ====================
# :emoji: Subject (Dir/AddedFile Dir/AddedFile)
#
# Commit body...

lazygitで使うには? 🔍

実はpummitはlazygitでも使えるんです!
lazygitとはGitをTUIインターフェースで操作できるチョー便利なクライアントです。
https://github.com/jesseduffield/lazygit
https://qiita.com/snyt45/items/32b1006490ae4da86766
lazygitでpummitを使用するには、以下のキーバインドを.config/lazygit/config.ymlに設定してください

customCommands:
- key: 'c'
  prompts:
    - type: 'input'
      title: 'Commit message'
      initialValue: ''
  command: "pummit '{{index .PromptResponses 0}}'"
  context: 'files'
  description: 'commit changes(Custom Command)'

エイリアス機能ってなに? 📎

例えばwastebasketを入力するのは少し大変ですが、エイリアス機能を使うとwbで簡単に入力できるようになります。

$ pummit wb モジュールの削除
# Result: :wastebasket: モジュールの削除 (path/to/added/file)

Add command

このコマンドはエイリアスを追加することが出来ます。

$ pummit alias add 's' 'sparkles'

この場合ではsというエイリアスを入力するだけでコミットメッセージのEmoji prefixにsparklesを代入できるようになります。

$ pummit s 新機能の追加
# Run: git commit -m ':sparkles: 新機能の追加 (path/to/added/file)'

Delete command

このコマンドはエイリアスを削除することが出来ます。

$ pummit alias delete s

この場合では、s=spaklesというエイリアスが登録されている前提でこのコマンドを実行した場合ssparklesの関連付けがなくなるため、以下のコマンドを実行してもEmoji prefixにはsしか代入されません。

$ pummit s 新機能の追加
# Run: git commmit -m ':s: 新機能の追加 (path/to/added/file)'

また引数に削除したいエイリアスを複数指定することが出来ます。

$ pummit alias delete s sm c h

Delete --all command

このコマンドは登録されているエイリアスを全て削除します。

$ pummit alias delete --all

List command

このコマンドは登録されているエイリアスを全て表示します。

$ pummit alias list

もし、エイリアスにs=sparklest=tadaが登録されている場合は以下のように出力されます。

📎 There is aliases
Alias : Prefix : Emoji
  s : sparkles : ✨ 
  t : tada : 🎉 

Reset command

このコマンドをエイリアスをリセットします。

$ pummit alias reset

もし、エイリアスがこのように混乱するほどあったり、config.jsonを直接弄って壊してしまったときのためのリカバリとして使うことが出来ます。

$ pummit alias list
 📎 There is aliases
Alias : Prefix : Emoji
----------------------
  hjjciiiisadsadasda : sparkles : ✨
  w : wrench : 🔧
  s : sparkles : ✨
  l : rotating_light : 🚨
  p : hankey : 💩
  wb : wastebasket : 🗑️
  c : construction : 🚧
  sm : snowman : ☃️
  hj : sparkles : ✨
  hjjjksda : sparkles : ✨
  hjjca : sparkles : ✨
  hjjciiiia : sparkles : ✨
  a : art : 🎨
  h : horse : 🐎
  r : recycle : ♻️
  t : tada : 🎉
  b : bug : 🐛
  e : eyes : 👀
  d : books : 📚

このようにエイリアスがたくさんある場合でも

$ pummit alias reset
> May I reset the aliases? :(Y/n) y
[INFO] Alias reseted

 📎 There is aliases
Alias : Prefix : Emoji
----------------------
  sm : snowman : ☃️
  h : horse : 🐎
  w : wrench : 🔧
  l : rotating_light : 🚨
  p : hankey : 💩
  wb : wastebasket : 🗑️
  c : construction : 🚧
  r : recycle : ♻️
  s : sparkles : ✨
  t : tada : 🎉
  e : eyes : 👀
  b : bug : 🐛
  d : books : 📚
  a : art : 🎨

コマンド一つで綺麗な状態に戻せます。

Discussion