はじめに
こんにちは!さいけです。
本記事は、「gitでmasterブランチに直pushをできないようにする方法」について紹介します。
gitでmasterブランチに直pushをできないようにする方法
masterブランチに直pushをできないようにする方法は様々ありますが、今回はシンプルなやり方を紹介します。
結論から言うと、gitのhooks機能を利用してmasterに直pushをできないようにします。
本題に入る前に簡単にgit hooksについて説明します。
git hooksとは
git hooksとは、gitコマンド実行前もしくは実行後をトリガーとして、任意のスクリプトを実行できるようにするための仕組みです。
色々なタイミングで任意のスクリプトを実行できます。
軽く例を挙げると、push前やcommit前などです。
詳しくは.git/hooks直下を見てみてください。
サンプルスクリプトが色々あります。
git hooksを使う
さて、本題です。
masterブランチに直pushをできないようにするには、push前にmasterブランチならpushを不可能にするスクリプトを実行すれば良いです。
直pushをできないようにしたいプロジェクトで、pre-pushファイルを作ります。
作成場所は.git/hooks/pre-pushです。
また、pre-pushのコードは以下のようにすれば良いです。
echoの内容は、わかりやすいようにサンプルにしてあります。
#!/bin/bash
while read local_ref local_sha1 remote_ref remote_sha1
do
if [[ "${remote_ref##refs/heads/}" = "master" ]]; then
echo "masterに直pushはしないでー"
exit 1
fi
done
作成したら、pre-pushに実行権限を与えます。
$ chmod a+x .git/hooks/pre-push
実行権限を与えたら、ターミナルを念の為再起動します。
検証
編集したファイルをmasterブランチに直pushしてみます。
$ git push origin master
masterに直pushはしないでー
error: failed to push some refs to 'https://github.com/hogehoge/fugafuga.git'
ちゃんと怒られて、masterブランチに直pushができないようになりました。
これで寝ぼけていても安心です👍
コメント