Git Hooksの利用

応用編:チーム開発とベストプラクティス」における Git Hooks(ギットフック)の利用 について、以下のとおり詳しく説明します。


Git Hooks(ギットフック)とは

Git Hooks とは、Gitの特定のイベント(例:コミット前、マージ後など)に自動で実行されるスクリプト機能です。開発チームが一貫したコード品質や運用ルールを維持するために活用されます。

Git リポジトリの .git/hooks ディレクトリに格納されているシェルスクリプトやその他の実行ファイルが、トリガーイベントに応じて呼び出されます。


主なGit Hooksの種類(代表例)

フック名 発火タイミング 目的例
pre-commit git commit 実行時、コミット前 コード整形、静的解析、テスト実行など
prepare-commit-msg コミットメッセージ作成直前 コミットメッセージのテンプレート自動挿入
commit-msg コミットメッセージ作成後 メッセージのフォーマット検証
pre-push リモートへプッシュ前 テストの再実行、Linterチェック
post-merge マージ完了後 依存ライブラリの再インストール
pre-rebase リベースの開始前 保護されたブランチのチェック

利用方法

  1. .git/hooks ディレクトリにスクリプトファイルを配置します。

  2. ファイルに実行権限を付与します(例:chmod +x pre-commit)。

  3. Git操作に応じて自動実行されます。

例:pre-commit フックの例(Pythonでフォーマットチェック)

bash
#!/bin/sh echo "Running Black for formatting..." black . || exit 1

このスクリプトは、コミット前に black(Pythonコード整形ツール)を実行し、失敗した場合はコミットを中止します。


チームでの共有方法

.git/hooks は通常 .git 配下にあるため、Git管理の対象外です。チームでフックを共有するには、次のようなアプローチをとります:

  • hooks/ ディレクトリをリポジトリに作成し、スクリプトをそこに配置

  • フックを有効化するインストール用スクリプト(例:setup-hooks.sh)を用意

  • または、**Husky(Node.js)**などのツールでフックの管理・共有を自動化


ベストプラクティス

  • ローカルで軽く実行できる内容にする(重すぎる処理は避ける)

  • コミットメッセージの一貫性を強制することで、チーム開発の品質を向上

  • CIツールと併用し、ローカルとサーバー両方での品質チェックを行う

  • チーム全体での合意のあるルールに基づいたフック内容にする


よくある用途

  • コーディング規約の自動チェック(ESLint, Blackなど)

  • コミットメッセージのルール(例:Conventional Commits)

  • セキュリティチェックや秘密情報の検出

  • テストの自動実行(事前にエラーを防ぐ)


まとめ

Git Hooksは、ローカルのGit操作に対して自動化を加える強力な仕組みであり、チーム開発においてコード品質・運用ルールの統一に貢献します。効果的に運用することで、開発効率の向上とバグの早期発見につながります。

必要に応じて、Huskylefthook などのツールと組み合わせることで、より保守性・共有性の高い開発環境を構築することが可能です。

生成日:2025/06/09