gitでmasterブランチへの直pushを未然に防ぐためのセーフーティネットの作り方。
github上でmasterブランチへのpushを禁止すれば良いのだが、DevOpsの都合上でgithubの設定では問題があったのでhooksを使う方向で設定した。
グローバルに設定したいので~/.git_template/hooks配下にpre-pushファイルを作成する。.git_templateディレクトリが存在しない場合は作成する。
なお、グローバルに設定しても既存のリポジトリには反映されないので、既存リポジトリに反映したい場合は既存リポジトリの./git/hooks配下にpre-pushを用意し、そちらに同じソースを記述する必要がある。
pre-pushに記述する内容は gitのpre-push hookでmasterブランチにpushする際にプロンプトで確認するようにするを参照。
answer部分はyesだけにしておくほうがより安全かもしれない。
新規に作成したpre-pushには実行権限を与えておくchmod +x pre-push
以上でセットアップ完了。
関連書籍