🤖
gitでmasterにpushできないようにする
プルリクエスト駆動開発なのに、間違えてmasterにpushしてしまったことは無いですか?僕はあります。
こうなってしまったらforce pushなどで歴史改変をしないといけなくなるので非常に面倒です。
これを防ぐために、push前に気付くようにしましょう。
- pre-pushファイルを作成する
- master、developへのpushを禁止する
- ローカルリポジトリの
.git\hooks
にpre-push
というファイル名でファイルを作成し、以下のコードを保存する
#!/bin/bash
while read local_ref local_sha1 remote_ref remote_sha1
do
if [[ "${remote_ref##refs/heads/}" = "master" ]]; then
echo "Do not push to master branch!!!"
exit 1
elif [[ "${remote_ref##refs/heads/}" = "develop" ]]; then
echo "Do not push to develop branch!!!"
exit 1
fi
done
- masterにpushしようとすると
Do not push to master branch!!!
と警告が出る -
elif
で条件を増やせば、push禁止のブランチを増やすことができる - GitHubを使っているのであれば、ブランチのprotect設定を行うことでpushを制限することができます
Discussion