Edited at

git push origin master を禁止するbash設定

GitHubを使用しているとうっかり git push origin master でmasterブランチを上書く事がありますがそれを防ぐためのbash設定の紹介になります。

bashコマンドのフック処理を覚えておくと色々と応用が利きそうなのが試みた動機になります。


設定手順

ターミナル上のコマンドをフックするために bash-preexec を利用します。

任意のディレクトリにダウンロードしてください。

cd ~

git clone git@github.com:rcaloras/bash-preexec.git

~/.bash_profile に以下のコードを追加して source ~/.bash_profile で反映させます。

origin 以外に upstream も対象にするならif文を追加してください。

source ~/bash-preexec/bash-preexec.sh

preexec_functions=() # source ~/.bash_profile を複数回実行するとコマンドが複数登録されてしまう
preexec_functions+=(ignore_push_master)

ignore_push_master() {
if [ "${1}" = "git push origin HEAD:master" ]; then
echo "Don't use 'git push master' !!"
kill -INT 0
fi

if [ "${1}" = "git push origin master" ]; then
echo "Don't use 'git push master' !!"
kill -INT 0
fi
}


参考サイト

以下のサイトからヒント、インスピレーションをいただきました。感謝!