たまに使う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回目のコミットです