実現したいことは、あるブランチで直接 commit することを禁止し、他のブランチからの merge commit のみを許すことです。例えば、 Gitflow で運用した時に develop ブランチへの直接 commit を禁止して、 featurerelease ブランチなどからの merge commit だけを認めることを開発メンバに強要したいといったケースです。

コミット前にチェックするための仕掛けとして pre-commit フックを使うのが最も自然だと思うんですが、実行されたのが commitmerge --no-ff による merge commit かをフックスクリプト(hook scripts)の中で区別する手段ってあるんでしょうか?

もしくは pre-commit フックを使わずに上記を実現する方法はあるんでしょうか?