👀
gitで「force push」を行うときに確認を出し事故を防止する
概要
自分が開発中に「force push」を行い面倒さいことになったのでその対策を備忘録に残す。
方法
Git Hooksを使う
Git フック
特定のアクションが発生した時にカスタムスクリプトを叩く方法
https://git-scm.com/book/ja/v2/Git-のカスタマイズ-Git-フック
Git Hooksの関連ファイルは.git
配下にあります!
今回はグローバルに適用したいので、~/.git_template
配下に関連ファイルなどを作成して対応します!
# ディレクトリを作成
$ mkdir -p ~/.git_template/hooks
# pushアクション時に実行するスクリプト
$ vi ~/.git_template/hooks/pre-push
# テンプレートに指定する
$ git config --global init.templatedir '~/.git_template'
実際に使っているpre-push
は下記のようになってます。
#!/bin/sh
# 入力コマンドを取得
command=$(ps -ocommand= -p $PPID)
# ここの条件は自由にカスタマイズ可能
# 自分の場合はforceオプションが含まれていたら。
if [[ $command =~ 'force|\-f' ]] ; then
# コマンドラインに確認文を出力
read -rp 'force pushを実行しますか? (yes/no):' input < /dev/tty
if [ "${input}" = "yes" ]; then
echo "do force push"
else
# yes 以外であればエラーを返す
exit 1;
fi
fi
間違っている内容やみなさんのおすすめの設定があればコメントいただけると嬉しいです!!
参考
Discussion