The goal of a Pre-receive (push) Hook is to validate all incoming commits as they first appear in repository. So, if changes are validated once, and they won’t be checked by the pre-receive hook again.

A Merge Check validates all commits included into Pull Request (YACC does this even if they were checked already). This allows to postpone validation until PR merge, rather than at the time the changes are pushed. If you haven’t enabled push-hook, incoming changes will not be validated during push.

Note, that Pull Request merge may create new commits with new hashes, which haven’t been validated yet, so push-hook should step in here and validate them on merge. This may happen in cases like these:

  1. merge-commit for this pull-request: can be excluded by Exclude Merge Commits option

  2. history-modifying commits, created with rebase or squash merge strategies: we recommend against using these merge strategies. Please contact support if experience any issues.

  3. commits introduced by fork / sync / resolve-conflicts / upmerge workflows

You can use Pre-receive Hook and Merge Check independently, with a separate settings. Or you may enable them both together, to combine validation of some rules as they are committed and postponing some checks until Pull Request merge.