小ネタです. Gitで開発をしていて, 特定のbranchのみcommit/pushしたくない, という場合があるかと思います. 例えばmain
ブランチにはcommit/pushしたくない, など.
これを実現するには様々な方法がありそうですが, 自分はGitのhookの機能を使って実現しています.
今回の場合, 「commitしたくない」を実現するためにcommit前に発火するpre-commit
のhookを, 「pushしたくない」を実現するためにpush前に発火するpre-push
のhookを使えば良さそうです. 例として, main
ブランチについてcommit/pushをしたくないという場合には, 次のようなスクリプトを設置するとうまくいきます(commit/pushしようとすると, メッセージを出力した上で強制的に中止してくれます).
.git/hooks/pre-commit
#!/bin/sh # mainブランチにはcommitできない if test "`git symbolic-ref HEAD | sed -e 's:^refs/heads/::'`" = 'main'; then echo "cannot commit on main branch." exit 1 fi
.git/hooks/pre-push
#!/bin/sh # mainブランチにはpushできない if test "`git symbolic-ref HEAD | sed -e 's:^refs/heads/::'`" = 'main'; then echo "cannot push on main branch." exit 1 fi