Git の Commit Template + Subliem Text 2 の Snippet でコミットメッセージの作法を統一・効率化する #git

## :musical_score: 概要
<i class="fa fa-code-fork" style="font-size:1em;"></i> Git の Commit Template でコミットメッセージの作法を統一し、
Subliem Text 2 の Snippet でコミットメッセージの作法にのっとった入力を効率化します

## :hand: 前提
* チーム全員が Sublime Text 2 を利用しています
* 以下のように、 git の `core.editor` を設定しておきます

~~~bash
# Windows 環境を利用しています
$ git config --global core.editor "'c:/program files/sublime text 2/sublime_text.exe' -w"
~~~

## <i class="fa fa-flag-checkered" style="font-size:1em;"></i> 目的
* コミットメッセージの作法統一
    * 作法の統一を手動に頼らない
        * Snippet で最小の手間で正確に入力
    * 脳の記憶域に頼らない
        * Commit Template のコメントに Snippet のヘルプを表示しておくことで Snippet のキーワードを忘れても安心
    * 1 キーでも楽に入力する
        * 1 行目にコミット要約を入力後、ファイル末尾に移動すれば少ないキー入力でコミット詳細を入力可能

### :ballot_box_with_check: デフォルトの挙動を確認

`git commit` をオプション指定なしで呼び出した場合、
以下のようなテンプレートとともにエディタが起動します。

任意のメッセージを入力・保存し、テキストを閉じるとコミットメッセージが登録されます。

~~~

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   hoge.txt
#
~~~

## <i class="fa fa-files-o" style="font-size:1em;"></i> Snippet 作成
[Atom Editor の Git Commit Messages](https://atom.io/docs/v0.108.0/contributing#git-commit-messages) の
`Consider starting the commit message with an applicable emoji:` のように、

絵文字からコミット要約（コミットの1行目のメッセージ）を始めるとものとします。
この際に利用する Sublime Text の Snippet を作成します。

* Add カテゴリの Snippet 例

~~~xml:cm_add.sublime-snippet
<snippet>
  <content><![CDATA[
:new: Add: ${1:summary}
]]></content>
  <tabTrigger>cm_add</tabTrigger>
  <scope>text.plain</scope>
  <description>git commit 時の 1行目 メッセージテンプレート（カテゴリ：追加）</description>
</snippet>
~~~

その他、一通りの Snippet は下記に公開してあります。
<i class="fa fa-external-link" style="font-size:1em;"></i><i class="fa fa-github-alt" style="font-size:1em;"></i> [Git Commit first line commit templates](https://github.com/tbpgr/git_commit_snippets)

上記の Snippet を各開発の Sublime Text2 に追加します。

## <i class="fa fa-gears" style="font-size:1em;"></i> 設定
### :skull: commit.template を作成

~~~:.commit.template

# ↑↑↑ コミット要約を 1行 50 字以内で記述してください ↑↑↑
# 下記の Snippet を利用できます。
# 新規追加 / cm_add
# :new: Add: input_your_summary
# バグ修正 / cm_bug
#:bug: Fix: input_your_summary
# 機能変更 / cm_modify
#:hammer: Modify: input_your_summary
# リファクタリング / cm_refactor
#:recycle: Refactor: input_your_summary
# 自動生成や自動編集されたファイル / cm_tool
#:computer: Tool: input_your_summary
# 削除 / cm_delete
#:x: Remove: input_your_summary

# ↓↓↓ コミット詳細を最後の行以降に記述してください ↓↓↓
~~~

### <i class="fa fa-gear" style="font-size:1em;"></i> 作成したファイルを git に設定

~~~bash
git config --global commit.template $HOME/.commit.template

# 個別のプロジェクトに設定する場合は、 --global は不要
# git config commit.template ./.commit.template
~~~

## <i class="fa fa-flask" style="font-size:1em;"></i> 実演

![demo1.gif](https://qiita-image-store.s3.amazonaws.com/0/43480/59b2dc49-80a9-6d61-b528-d83551f37332.gif)

### <i class="fa fa-bitbucket-square" style="font-size:1em;"></i> BitBucket で Emoji 付きコミットメッセージを確認

![bitbucket.png](https://qiita-image-store.s3.amazonaws.com/0/43480/085c3c02-4050-efeb-8c09-a6481b8ba879.png)

## :memo: メモ
Emoji などを含めたコミットルール自体の是非については、論点ではないのでスルーをお願いします。