git

git hookでcommitメッセージに過去のメッセージを表示する

たまに使うGUIツールでコミットする時に、過去のコミットメッセージを表示できる機能がなかなか便利だったので、それをgit hookを使ってコマンドラインのgitのコミットでも表示するようにしてみた。

gitテンプレートディレクトリを作成

mkdir -p ~/.git_template/hooks
git config --global init.templatedir ~/.git_template/

hookファイル作成

vi ~/.git_template/hooks/prepare-commit-msg

中身↓(とりあえず直近5回分のコミットメッセージを表示するようにする)

#!/bin/sh
echo '# Last 5 commit messages:' >> "$1"
git log --oneline --no-merges --no-color | head -n 5 | sed 's/^/# /'  >> "$1"

hookファイルのパーミッション変更

パーミッションを変えて実行可能にする(これをしないとhookされない)

chmod +x ~/.git_template/hooks/prepare-commit-msg

注意点

  • すでに Git で管理されているディレクトリに、新たに作成したフックスクリプトを追加する場合は改めてgit initする必要がある

  • すでに同名のフックスクリプトが読み込まれている場合は、該当ファイルを削除しないとgit initを実行してもフックスクリプトは生成されない

実行結果

ちなみに今回作った設定だとこんな感じで直近5回分のコミットメッセージがコメントとして表示されるようになる。

# 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:
#   modified:   test.html
#
# Last 5 commit messages:
# 5ace3dd これは5回目のコミットです
# fc9de58 これは4回目のコミットです
# 222736f これは3回目のコミットです
# 838ec51 これは2回目のコミットです
# c6da0dc これは1回目のコミットです
ABOUT ME
ytakeuchi
都内在住のフロントエンドエンジニア。2016年からフリーランスとして活動中。座右の銘は「昨日よりも楽に」。好きな言葉は「効率化」。こんな性格なのでプライベートではGoogle Apps Scriptばかり触っています。