小ネタです. 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