この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
gitのコミットメッセージを記述するとき、内容について悩むことが度々あります。
簡潔に要点をまとめて書きたいけどいちいち記述が面倒だったり、チームで書き方がバラバラだったり・・・
そして結局「fix bug」のひとことだけメッセージを記述するだけになったりします。
この記事ではそんなコミットメッセージを少しでも簡単に有用にするためのツールを紹介します。
Commitizen?
コミットメッセージを簡単・簡潔に記述したいときに使えるのがCommitizenです。
Commitizenはインタラクティブにコミットメッセージを作成できるツールで、
- このコミットのタイプ
- スコープ
- コミットのサマリー
- コミットの詳細
などについて対話的に記述していくことで、適切なコミットメッセージを作成できます。
? Select the type of change that you're committing: feat: A new feature
? What is the scope of this change (e.g. component or file name): (press enter to skip) hello.txt
? Write a short, imperative tense description of the change (max 83 chars):
(6) サンプルテキストファイル新規追加
・
・
・
環境
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.14.5
- node.js : v12.8.0
- npm : v6.10.3
インストール
Commitizenはnpmを使って簡単にインストールできます。
% npm install -g commitizen
そして、git commitのかわりに git czとすれば
Commitizenでコミットメッセージを作成できます。
また、npm5.2以降を使用している場合、グローバルインストールしなくても ↓のようにnpxで実行可能です。
% npx git-cz
つかってみる
ではCommitizenをつかってみます。
適当なgitリポジトリでコミットしてみます。
%touch hello.txt
%git add hello.txt
%git cz
cz-cli@4.0.3, cz-conventional-changelog@3.0.1
? Select the type of change that you're committing: (Use arrow keys)
❯ feat: A new feature
fix: A bug fix
improvement: An improvement to a current feature
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
refactor: A code change that neither fixes a bug nor adds a feature
perf: A code change that improves performance
git czコマンドで、コミットの種類や内容を記述する対話式インターフェイスが起動しました。
入力していくと、↓のようなメッセージが作成されます。
(#123はissueの番号)
commit xxxxx (HEAD -> master)
Author: nakamura shuta
Date: Fri Nov 22 11:01:59 2019 +0900
feat(hello.txt): ファイル追加
hello.txtファイルを新規に追加
#123
日本語化する
このままつかってもよいですが、日本語のほうがわかりやすいこともあります。
その場合、cz-conventional-changelog-ja というモジュールを設定すれば、
インターフェイスが日本語になります。
npm install -g cz-conventional-changelog-ja
~/.czrcファイル(なければ作成)に、下記内容を記述します。
{
"path": "cz-conventional-changelog-ja"
}
git czコマンドを実行すると、日本語化されています。
%git cz
cz-cli@4.0.3, cz-conventional-changelog-ja@0.0.2
1行目は100文字で切り取られ、超過分は次行以降に記載されます。
? コミットする変更タイプを選択: (Use arrow keys)
❯ feat: 新機能
fix: バグ修正
docs: ドキュメントのみの変更
style: フォーマットの変更(コードの動作に影響しないスペース、フォーマット、セミコロンなど)
refactor: リファクタリングのための変更(機能追加やバグ修正を含まない)
perf: パフォーマンスの改善のための変更
test: 不足テストの追加や既存テストの修正
tigでCommitizenを使う
私は普段tigをgitクライアントとして使っているのですが、
tigを使ったコミット時にもCommitizenを使えます。
その場合、~/.tigrcにCommitizenのコマンドをバインドするだけです。
~/.tigrcファイル(なければ作成)に、下記内容を記述。
bind status C !git cz
これでtigからのコミットでもCommitizenのインターフェイスでメッセージを作成できます。