3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【GitHooks】GitHooksの設定内容をチームで共有する。

Posted at

概要

過去2回にわたってGitHooksを使った事例を紹介しました。
【Git Hooks】コミット時にコミットメッセージの自動チェックを行う。【commit-msg】
【GitHooks】mainブランチへのコミットを禁止する。【pre-commit】

これらの設定は個人のローカル環境で設定するものですが、Hooksの設定をチーム内にも共有しルール化することができます。

Git Hooksとは

Git Hooksとはgitに標準で備わっている機能の一つで、git commitgit pushが実行された際に、スクリプトを実行することができ、そのスクリプトの実行結果によってコマンドを通すかどうかを自動的に判断させることができます。
8.3 Git のカスタマイズ - Git フック

実行されるスクリプトファイルは以下の場所に置かれています。

$ ls .git/hooks
applypatch-msg.sample     post-update.sample        pre-merge-commit.sample   pre-receive.sample        update.sample
commit-msg.sample         pre-applypatch.sample     pre-push.sample           prepare-commit-msg.sample
fsmonitor-watchman.sample pre-commit.sample         pre-rebase.sample         push-to-checkout.sample

これらのファイル名は予約されていて、gitコマンドが実行されたときに任意のタイミングでそれぞれのスクリプトが動作することになっています。
デフォルトでは全てのファイルの拡張子が.sampleとなっているため、どのスクリプトファイルも動作していませんが、拡張子.sampleを取り除くと、gitコマンドのそれぞれのタイミングでファイルに記述されているスクリプトが実行されます。
(シェルスクリプトの拡張子.shは不要です。)

実装

共有するGitHooksの作成

  1. 今回はリポジトリルート(.envや.gitignoreが置かれている階層です。)に.githooksディレクトリを作成します。
    $ mkdir /.githooks

  2. さらに概要のところで紹介したcommit-msg, pre-pushファイルを.githooksディレクトリ内に作成します。
    $ touch .githooks/commit-msg; touch .githooks/pre-push
    各Hooksスクリプトの内容については概要の記事をご参照ください。

  3. Hooksスクリプトファイルに実行権を付与します。
    $ chmod a+x .githooks/*

GitHooks参照先の変更

GitHooksの参照先デフォルトパスは.git/hooksとなっているため、このパスを先ほど作成した.githooksディレクトリに変更することで、リポジトリ内で共有されているHooksスクリプトを使えるようになります。
GitHooksの参照先を変更するコマンドはgit configコマンドのcore.hooksPathで変更を行うことができます。

.githooksを参照するコマンド
$ git config --local core.hooksPath .githooks

デフォルトに戻すコマンド
$ git config --local core.hooksPath .git/hooks

現在の参照先を確認するコマンド
$ git config --local --list
...(省略)
core.hookspath=.githooks
...

上記のコマンドで設定を変更することで、チーム内で共有されたHooksスクリプトを利用できるようになります。
プロジェクトに参加するメンバーは最初に上記のコマンドを実行する必要がありますが、以後はプロジェクト内で作られGit管理されているHooksスクリプトが適用されますので、Hooksスクリプト自体のメンテナンス性も上がります。

参考

【Git Hooks】コミット時にコミットメッセージの自動チェックを行う。【commit-msg】
【GitHooks】mainブランチへのコミットを禁止する。【pre-commit】
sample-codes/githooks/ - GitHub

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?