👻

Git hooks入門

2023/02/06に公開

今回はgit hooksについて解説していきます。

こちらの機能を使うことで、gitのコマンドに対応して自動でスクリプトを実行することができます。

とても便利な機能なので、この機会に学んできましょう。

hooksのスクリプトを作成

まず、簡単なhooksのスクリプトを作成しましょう。

最初に、.githooksディレクトリを作成して、その配下に以下の2つのファイルを作成します。

pre-commit

#!/usr/bin/env zsh
echo 'hello pre-commit'

pre-push

#!/usr/bin/env zsh
echo 'hello pre-push'

pre-commitはコミットの前に実行され、pre-pushはpushの前に実行されるようになります。

これ以外にも、いくつかのタイミングに合わせたhookが用意されています。

設定方法

次にhookをgitに登録します。

Git hookを実行させるには、git config core.hooksPathに対応するディレクトリを設定すればOKです。

具体的には、以下のコマンドを実行しましょう。

git config core.hooksPath .githooks

ちなみに、設定するディレクトリ名はなんでもOKです。

また、このままでは実行権限がないと言われて怒られるので、次のコマンドを打ちましょう。

hmod -R +x .githooks/

これで設定は終わりです。

実践

では早速、試してみましょう。

$ git commit -m "add git hooks"
hello pre-commit
...

$ git push origin HEAD
hello pre-push
Enumerating objects: 227, done.
...

このように、コマンドの実行前にシェルスクリプトが実行されているのが分かるかと思います。

今回はzshで実装しましたが、シェバング(#!)を変えれば他の言語での実行なども可能です。

また、今回は簡単な例の紹介に留めましたが、基本的にhookはテストやリンターなどと一緒に使用されます。

まとめ

今回はgit hooksについて解説しました。

かなり便利な機能になるので、これを機に使ってみてはいかがでしょうか?

宣伝

0からエンジニアになるためのノウハウをブログで発信しています。
https://hinoshin-blog.com/

また、YouTubeでの動画解説も始めました。
YouTubeのvideoIDが不正ですhttps://www.youtube.com/channel/UCqaBUPxazAcXaGSNbky1y4g

インスタの発信も細々とやっています。
https://www.instagram.com/hinoshin_enginner/

興味がある方は、ぜひリンクをクリックして確認してみてください!

Discussion