【Git】pre-commitでコミット時にフォーマットする

2023.08.29
2024.03.24
開発環境
gitpre-commityamlfmt

はじめに

pre-commit について紹介していきます。

pre-commit とは

pre-commit とは、Git でコミットする時に自動でファイルをフォーマットしてくれるツールです。

pre-commit

pre-commit

コミットすると、対象のファイルから空白を削除したり、不要なスペースを削除したりしてくれます。

インストール

brewを使って、pre-commit をインストールできます。

1brew install pre-commit

設定

.pre-commit-config.yamlを作成することで、pre-commit でどのような処理をするか設定できます。

下記のコマンドでサンプルの設定を出力できます。

1pre-commit sample-config
1# See https://pre-commit.com for more information
2# See https://pre-commit.com/hooks.html for more hooks
3repos:
4  - repo: https://github.com/pre-commit/pre-commit-hooks
5    rev: v3.2.0
6    hooks:
7      - id: trailing-whitespace
8      - id: end-of-file-fixer
9      - id: check-yaml
10      - id: check-added-large-files

repoで利用する hook を取ってくるリポジトリを指定し、hooksで利用する hook を指定します。

サポートされている hook は下記にあります。

pre-commit

pre-commit

使い方

.pre-commit-config.yamlを作成したら、下記のコマンドを実行して、hook スクリプトの準備をします。

1pre-commit install

これでgit commitすると、pre-commit が hook を実行され、フォーマットしてくれます。

また、git commitで対象となるファイルは更新があったファイルのみですが、全てのファイルに対して実行する場合は下記のコマンドを利用します。

1pre-commit run --all-files

yamlfmt と使ってみる

実際に、yamlfmtを pre-commit で使って YAML ファイルをフォーマットしてみます。

yamlfmtについては、下記で紹介しています。

unknown link

まずは、.pre-commit-config.yamlを作成します。

1repos:
2  - repo: https://github.com/google/yamlfmt
3    rev: v0.9.0
4    hooks:
5      - id: yamlfmt

試しに、YAML ファイルを作成して、コミットすると、結果はFailedになり、ファイルが変更されました。

1git add .
2
3git commit -m "test pre-commit"
4yamlfmt..................................................................Failed
5- hook id: yamlfmt
6- files were modified by this hook

再度コミットすると、結果がPassedになり、コミットができていることが確認できます。

1git add .
2
3git commit -m "test pre-commit"
4yamlfmt..................................................................Passed
5[main 2236244] test pre-commit
6 1 file changed, 28 insertions(+)
7 create mode 100644 pre-commit-and-yamlfmt/deployment.yml

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee