ウッカリ main ブランチにコミット・Push しないようにする Git Hooks を作る
今さらなネタだが書いておく。業務環境によってはリモート Git サーバ側でブランチ保護設定ができない場合もあったりするので、クライアント側で Git Hooks を作って自衛しときましょう、という話。
$ cd /PATH/TO/GIT-DIRECTORY/
$ cd ./.git/hooks/
# サンプルファイルが置いてあるのでそれをコピーしてファイルを用意する
$ cp ./pre-commit.sample ./pre-commit
$ cp ./pre-push.sample ./pre-push
# もし実行権限が付いていなければ付与する
$ chmod +x ./pre-commit
$ chmod +x ./pre-push
./pre-commit
#!/usr/bin/env/ bash
current_branch=$(git symbolic-ref --short HEAD)
if [ "${current_branch}" = 'main' ]; then
echo 'エラー!main ブランチにコミットしようとしています!'
exit 1
fi
./pre-push
#!/usr/bin/env bash
current_branch=$(git symbolic-ref --short HEAD)
if [ "${current_branch}" = 'main' ]; then
echo 'エラー!main ブランチに Push しようとしています!'
exit 1
fi
こんな感じで、.git/hooks/
配下に用意した所定のファイル名のシェルスクリプトが、exit 1
などである条件の時に異常終了するようにしてやれば、コミットや Push が失敗するようになる。