【プリコミット】
pre-commit とは?
最終更新:
💡 コミットの「門番」が問題のある変更を手元で止める
Gitのコミット前などに実行するチェック(フック)を、設定ファイルで管理・共有できるフレームワーク。リンターやフォーマッターをコミットのたびに自動で走らせ、問題のある変更を早めに見つけられる。
📌 このページのポイント
- Gitのpre-commitフックなどを、複数言語にまたがって管理・共有できるフレームワーク
- .pre-commit-config.yamlにチェック内容を書き、各自がpre-commit installでフックを有効にする
- Python製だが、各フックの実行環境を言語ごとに分けて用意するので、JavaScriptやGoなど他の言語のプロジェクトでも使える
- git commit --no-verifyなどで飛ばせるため、CIでもpre-commit run --all-filesを実行すると確実性が上がる
pre-commitって何をしてくれるツールなの?
へぇ、コミットを止めちゃうの?
設定は難しいのかな?
`.pre-commit-config.yaml`に、使うフックの公開リポジトリとバージョン、フックのIDを書くのが基本だよ。公式サイトには公開されているフックの一覧もあって、PythonのリンターからJavaScriptのフォーマッターまで選べるんだ
チーム全員に同じチェックをさせることもできるの?
フックを飛ばしてコミットする人がいたらどうなるの?
もっと詳しく知りたい人へ
pre-commitはコミット以外のタイミングでも使える?
使えるよ。pre-commitはpre-commitフックだけでなく、pre-push(プッシュ前)やcommit-msg(コミットメッセージの検査)など、ほかのGitフックの種類にも対応している。たとえば時間のかかるテストはプッシュ前に回すと、毎回のコミットを軽く保てるんだ。
まとめ:ざっくりこれだけ覚えればOK!
「pre-commit」って出てきたら「コミット前に自動でコードチェックしてくれる仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「pre-commit」 = コミットの前
💬 Gitにはコミットの前に処理を挟める「pre-commit hook」という仕組みがあって、それを簡単に使えるようにしたフレームワークの名前だよ