I would like to run a unit-tests before every git push and if tests fails, cancel the push, but I can\'t even find pre-push hook, there is pre-commit and pre-rebase only.
If you are using the command line, the easiest way to do this is to write a push script that runs your unit tests and, if they succeed, completes the push.
Edit
As of git 1.8.2 this answer is outdated. See manojlds's answer above.