プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Git
  • 【Git】「pre-commit」について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Git】「pre-commit」について

07.11

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

pre-commitとは?

Gitフックの一種で特定のGit操作のタイミングでスクリプトを実行することができる機能です。

タイミング

コミットをトリガーにできる。

ディレクトリ

gitディレクトリには以下のファイルがあるので、sampleという拡張子を除去すればコミット時の動作を指定することができます。

1
.git/hooks/pre-commit.sample

やりたいことをシェルスクリプトとして記述します。

デメリット

gitの管理ディレクトリにあるのでgit管理することができないことです。なのでチームメンバー内で共有することが難しくなります。

対策

設定スクリプトの中で自動的に.gitディレクトリ配下にスクリプトをコピーするスクリプトを作成する。

ユースケース

pre-commitは以下のような用途で使われることが多いです。

  • masterやdevelopブランチへのコミットを禁止する。
  • コンフリクト未解消のソースがあったらコミットさせない。
  • linterを実行してエラーがあったらコミットさせない。

注意点

かなりの回数実行されることになるので重い処理は避けること。(ネットワークを経由させるような処理など)

インストール

1
brew install pre-commit

設定ファイル生成

1
2
3
pre-commit sample-config > .pre-commit-config.yaml
// 設定ファイルをリポジトリに読み込ませる。
pre-commit install

試す。

これでpre-commitが動きます。

1
2
git add -A
git commit -m "あああ"

デフォルトでは以下のような項目が動きます。

項目 説明
trailing-whitespace 行末の半角スペースを削除する。
end-of-file-fixer ファイルがからであるか1つの改行であるかチェック
check-yaml ファイルが解析可能な構文であるかチェックする。
check-added-large-files 巨大なファイルがコミットされないようにする。

Husky

JavaScriptならHuskyというパッケージを使うことでシェルスクリプトなどを書かなくてもpre-commitを簡単に実装できます。

インストール

1
2
yarn add --dev husky
yarn husky install

設定

1
2
3
4
5
{
  "scripts": {
    "prepare": "husky install"
  }
}

スポンサーリンク
  • 2022 07.11
  • miyabisan2
  • コメントを書く
  • Git
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 11.21

    【GitHub】基本

  2. 2020 03.07

    【Git】スタッシュについて

  3. 2019 12.08

    【Git】「プルリクエスト」時にmasterブランチと差分があった場合

  4. 2019 11.20

    【Git】マージに関する知識

  5. 2020 03.03

    【Git】変更差分(git diff)、変更履歴(git log)を確認する。

  6. 2019 11.17

    【Git】ローカルリポジトリの知識、gitデータの管理の仕組み(内部動作など)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【マイクロサービス】設計(通信、APIゲートウェイ、テ…

【マイクロサービス】「メッセージブローカー」(AWSメ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー