🕌

コミットを小さい単位でまとめるためにしている事

2022/02/12に公開

はじめに

開発する上で「コミットのスコープは小さくしましょう」とはよく言われることだと思います。
この場合の、スコープは一つのコミットで一つの意味のある変更を指しています。
理由は様々ありますが、個人的には以下の部分にメリットを感じています。

  • コミットごとに意味があるので、レビューがしやすい
  • 変更履歴が追いやすい

ただ、コードを書いていると筆が乗り気付くと diff が大きくなってしまいます。(自分はよくあります 💦)
この記事では、コミットが小さくなるようにしている工夫を紹介します。

Tig を使う

Git はファイル単位ではなく行単位でコミットできます。
一つのファイルで、「命名の修正」と「バグの修正」をした場合コミットを分けたほうが上記理由のため良いと考えています。
自分は行ずつのコミットをするために tigを使っています。tig は git の状態を分かりやすく表示して add や commit をするためのツールです。(push, pull もしたい)

一行ずつ add できるなら、他のツールでも問題ないです。

commit.template を設定する

commit.template

システム上のファイルへのパスをここに設定すると、Git はそのファイルをコミット時のデフォルトメッセージとして使います。 ※1

git config の設定をすることで、コミット時のメッセージのテンプレートを設定できます。
自分は gitemoji を使うことで、コミットメッセージの理由を強制してコミット単位を意識するようにしています。(コミットも可愛くなり一石二鳥です)

git config --global commit.template .commit-template.txt

下記は自分が実際に使っているテンプレートの一部です。

.commit-template.txt
# :art: 
# :fire: 
# :bug: 
# :lipstick:
# :construction: 
# :truck:
# :necktie:
# :tada: 
# :sparkles: 
# :recycle: 

# ==== Emojis ====
# 🎨 :art: Improve structure / format of the code.
# 🔥 :fire: Remove code or files.
# 🐛 :bug: Fix a bug
# 💄 :lipstick: Add or update the UI and style files.
# 🚧 :construction: Work in progress
# 🚚 :truck: Move or rename resources (e.g.: files, paths, routes).
# 👔 :necktie: Add or update business logic
# 🎉 :tada: Begin a project
# ✨ :sparkles: Introduce new features
# ♻️ :recycle: Refactoring

参考

  1. 8.1 Git のカスタマイズ - Git の設定

Discussion