TL;DR: Hooks are not part of the repository and can therefore not be pushed/pulled
As you may know, there is a difference between client-side and server-dide hooks.
Client side hooks are run on the client and configured on each client.
If you would be able to push them, you would have a security vulnerability in git as the each client would just when doing git actions.
You can instead save the hooks somewhere in your repository (checked in) and create a script that copies them to the .git/hooks
directory.
You can then tell the contributers to run that script when cloning the repository in the contributing guidelines or the README.
You can also tell your users to run the following command in the repository in order to execute hooks in the directory you want:
git config core.hooksPath <your hooks directory>
If you want to create a server-side hook, you will need to upload the hook to the server manually.
Servers like GitHub do not allow to create custom server-side hooks but can configure things like protected branches.