1. HOME
  2. ブログ
  3. IT技術
  4. git-czを使ってコミットメッセージのフォーマットを統一する
git-czを使ってコミットメッセージのフォーマットを統一する

git-czを使ってコミットメッセージのフォーマットを統一する

gitのコミットメッセージのフォーマットを統一する

私たちのチームでは日々様々な開発環境の整備をしています。

その中の1つに「コミットメッセージのフォーマットを統一する」ということをやっています。

今日のゴール

今からご紹介するツールを導入すれば、コミットをするときに設定したコマンドを入力するとこのようにコミット種別が選べるようになります。

? Select the type of change that you're committing:
❯ 💍 test: Adding missing tests
🎸 feat: A new feature
🐛 fix: A bug fix
🤖 chore: Build process or auxiliary tool changes
✏️ docs: Documentation only changes
💡 refactor: A code change that neither fixes a bug or adds a feature
💄 style: Markup, white-space, formatting, missing semi-colons..

これらを使ってコミットをすると...

docs: ✏️ update README.md

このように[種別]: [絵文字] [コミットメッセージ]といったフォーマットでコミットログを残せるようになります。

今日はこれをなぜするのか、どうやって導入するのかを説明していきます。

なぜコミットメッセージのフォーマットを統一するの?

コミットメッセージを種別とメッセージに分けたフォーマットにすることでいくつかのメリットがあると考えています。

  1. あとでコミットログを見たときに何を対応したコミットか判りやすくなる
  2. 適切な粒度のコミットとなるように意識する

    あとでコミットログを見たときに何を対応したコミットか判りやすくなる

    なんと言っても一番のメリットはこれだと思います。

    普段開発をしていると、とあるコミットはどれだっけ・・・といった対象のコミットを探すことが稀にあると思います。

    そのときにコミットの頭に絵文字が入っているためパッと見て、そのコミットがテストのコミットなのか、バグ修正のコミットなのか、はたまたドキュメント修正だけなのかといったことがパッと見て判別がつきます。

    実際のイメージとしては、このようなコミットログとなります。

    絵文字だけをみてドキュメントの修正と機能実装のコミットが2つあるんだな・・・という情報が一目で判るようになります。

    適切な粒度のコミットとなるように意識する

    もう一つは副次的効果ではありますが、ツールを導入するとコミット種別を選ぶ必要があるので必然的にエンジニアが適切なコミットの粒度を意識するようになります。

    それにより極端に大きすぎる・小さすぎるコミットや色々な対応がごちゃ混ぜなコミットが減り、良い粒度のコミットができるようになっていきます。

    git-czを使ってコミットメッセージのフォーマットを統一する

    ではいよいよ実際にツールを導入する手順を紹介していきます。

    今回使用するのはgit-czというライブラリです。

    https://github.com/streamich/git-cz

    git-czのインストール

    今回はnpmでインストールします。yarnを使う場合などは適宜読み替えてください。

    npm install --save-dev git-cz

    インストールしたらpackage.jsonにnpm scriptsコマンドを追加します。

    これでgit-czを使う場合はnpm commitと打てば実行されるようになります。

    git-czのカスタマイズ

    git-czはデフォルトのままでも使えるのですが、せっかくなので今回はカスタマイズをしていこうと思います。

    プロジェクト直下にchangelog.config.jsというファイルを作ります。

    touch changelog.config.js

    そして以下のURLにあるサンプルをコピーしてそのまま貼り付けてください。これがデフォルトのコンフィグ情報となります。

    https://github.com/streamich/git-cz#custom-config

    コミット種別

    デフォルトから変更を入れる可能性があるとしたら、おそらくこのコミット種別になるかと思います。

    まずgit-czにはデフォルトでこのようなコミット種別があります。

    基本的には書いてある通りですが簡単に説明しておくとこのような種別があります。

    • chore: ビルド関係や便利ツールに関すること
    • ci: CIに関すること
    • docs: コード以外のドキュメントに関すること
    • feat: 新機能開発に関すること
    • fix: バグ修正に関すること
    • perf: パフォーマンス改善に関すること
    • refactor: リファクタリングに関すること
    • release: リリースに関すること
    • style: 見た目のデザイン修正や軽微なCSSの修正に関すること
    • test: テストコードに関すること

    例えばbug fixのコミットの絵文字を🐛じゃなくて、💚にしたいと言った要望があればこのようにemojiの部分を変更するだけで反映されます。

    他にも例えばライブラリアップデート用のコミット種別を作りたければ、このように追加することで可能です。

    あまり使用することはないかもしれませんが、他にも細かいカスタマイズがあるのでぜひ公式ドキュメント参考にやってみてください。

    いざ、実行!

    いよいよ実行してみようと思います。

    npm run commit

    実行するとこのようにコミット種別を選択するように促されるので、今回はREADMEを更新した想定でdocsを選択します。

    次にコミットメッセージを入力します。

    あとは設定にもよりますがいくつか設問があります。

    普段はあまり使わないのですが、このコミットによってcloseされるissue番号の情報だけサンプルとして入力してみます。(それ以外は何も入力せずEnterを押します)

    ここまで入力したらgit logでコミットログを確認します。

    するとこのように[種別][絵文字]: [message]のフォーマットでコミットログが残っていることが確認できました。

    このようにコマンドを打てばインタラクティブにフォーマットを統一できる仕組みができました。

    一度設定しておけばプロジェクトに新人が入っても仕組みで共有できるので本当に楽です。

    さいごに

    いかがだったでしょうか?

    以上がgit-czを用いた基本的なコミットログのフォーマット統一の方法でした。

    設定自体は1時間もかからずに準備できるので、ぜひプロジェクトに導入してみてください。

    関連記事

    採用情報

    \ あの有名サービスに参画!? /

    バックエンドエンジニア

    \ クリエイティブの最前線 /

    フロントエンドエンジニア

    \ 世界を変える…! /

    Androidエンジニア

    \ みんなが使うアプリを創る /

    iOSエンジニア