This depends a lot on your teams branch/merge and working model, on the quality of the linter rules, the quality of the unit tests and the actual running time of both.
When developers mainly commit to their local branch, or commit or push to an isolated feature branch, the influences of a non-clean commit on other team members are quite low, so they are usually tolerable. But assume a changeset is merged directly into a common dev branch, or into a shared feature branch, and the next dev pulls the unclean changes into his/her local working copy. Now when he/she notices failing unit tests, for example, then this will make the process quite ineffective, since it may not be clear any more whether the root cause were his/her own local changes, or the former merge.
If that is what you experiencing in your team, then a pre-push hook might be a useful solution. However, if the running time of those validations makes pushing a hassle, you should try to optimize. Maybe you can split the automated tests into a "slow" part which runs usually exclusively on the CI server, and a quick part which behave like "good" unit tests should behave - I mean, they should run very quick. That may help to streamline the process.