【Git】pre-commitでコミット時にフォーマットする
はじめに
pre-commit について紹介していきます。
pre-commit とは
pre-commit とは、Git でコミットする時に自動でファイルをフォーマットしてくれるツールです。
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-config.yaml
を作成したら、下記のコマンドを実行して、hook スクリプトの準備をします。
1pre-commit install
これでgit commit
すると、pre-commit が hook を実行され、フォーマットしてくれます。
また、git commit
で対象となるファイルは更新があったファイルのみですが、全てのファイルに対して実行する場合は下記のコマンドを利用します。
1pre-commit run --all-files
yamlfmt と使ってみる
実際に、yamlfmt
を pre-commit で使って YAML ファイルをフォーマットしてみます。
yamlfmt
については、下記で紹介しています。
【YAMLフォーマッター】yamlfmt使ってみる
はじめに YAML のフォーマッターである yamlfmt について紹介していきます。 yam
まずは、.pre-commit-config.yaml
を作成します。
1repos:
2 - repo: https://github.com/google/yamlfmt
3 rev: v0.9.0
4 hooks:
5 - id: yamlfmt
試しに、YAML ファイルを作成して、コミットすると、結果はFailed
になり、ファイルが変更されました。
1❯ git add .
2
3❯ git commit -m "test pre-commit"
4yamlfmt..................................................................Failed
5- hook id: yamlfmt
6- files were modified by this hook
再度コミットすると、結果がPassed
になり、コミットができていることが確認できます。
1❯ git add .
2
3❯ git 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
参考
- pre-commit
- pre-commit
- pre-commit/pre-commit: A framework for managing and maintaining multi-language pre-commit hooks.
- yamlfmt/docs/pre-commit.md at main · google/yamlfmt